let mkregexp ?(strict:bool=true) pl gl sl : Str.regexp = 

   let prefix = String.big (^) pl in
   let groups = String.big (^) (List.map (fun x->("\\(" ^ x ^ "\\)")) gl) in
   let suffix = String.big (^) sl in
   let expr = prefix ^ groups ^ suffix in
   let expr = if strict then ("^" ^ expr ^ "$"else expr in
   Str.regexp expr