Re.PosixReferences:
Example of how to use this module (to parse some IRC logs):
type msg = {
  time:string;
  author:string;
  content:string;
}
let re = Core.compile (Re_posix.re "([^:].*:[^:]*:[^:]{2})<.([^>]+)> (.+)$")
(* parse a line *)
let match_line line =
  try
    let substrings = Core.exec re line in
    let groups = Core.get_all substrings in
    (* groups can be obtained directly by index within [substrings] *)
    Some {time=groups.(1); author=groups.(2); content=groups.(3)}
  with Not_found ->
    None (* regex didn't match *)