let extract_groups (r:Str.regexp) (s:string) : string list = 
   match match_whole r s with
   | None -> raise Not_found
(* To do: It was "[]". This may break things, and should be considered experimental --L. *)
   | Some (a,s,g,b) -> g