sig   type t   type re   type groups   val compile : Re.t -> Re.re   val exec : ?pos:int -> ?len:int -> Re.re -> string -> Re.groups   val exec_opt : ?pos:int -> ?len:int -> Re.re -> string -> Re.groups option   val execp : ?pos:int -> ?len:int -> Re.re -> string -> bool   val exec_partial :     ?pos:int ->     ?len:int -> Re.re -> string -> [ `Full | `Mismatch | `Partial ]   module Group :     sig       type t = Re.groups       val get : Re.Group.t -> int -> string       val offset : Re.Group.t -> int -> int * int       val start : Re.Group.t -> int -> int       val stop : Re.Group.t -> int -> int       val all : Re.Group.t -> string array       val all_offset : Re.Group.t -> (int * int) array       val test : Re.Group.t -> int -> bool       val nb_groups : Re.Group.t -> int       val pp : Format.formatter -> Re.Group.t -> unit     end   module Mark :     sig       type t       val test : Re.Group.t -> Re.Mark.t -> bool       module Set :         sig           type elt = t           type t           val empty : t           val is_empty : t -> bool           val mem : elt -> t -> bool           val add : elt -> t -> t           val singleton : elt -> t           val remove : elt -> t -> t           val union : t -> t -> t           val inter : t -> t -> t           val diff : t -> t -> t           val compare : t -> t -> int           val equal : t -> t -> bool           val subset : t -> t -> bool           val iter : (elt -> unit) -> t -> unit           val fold : (elt -> '-> 'a) -> t -> '-> 'a           val for_all : (elt -> bool) -> t -> bool           val exists : (elt -> bool) -> t -> bool           val filter : (elt -> bool) -> t -> t           val partition : (elt -> bool) -> t -> t * t           val cardinal : t -> int           val elements : t -> elt list           val min_elt : t -> elt           val max_elt : t -> elt           val choose : t -> elt           val split : elt -> t -> t * bool * t           val find : elt -> t -> elt           val of_list : elt list -> t         end       val all : Re.Group.t -> Re.Mark.Set.t       val equal : Re.Mark.t -> Re.Mark.t -> bool       val compare : Re.Mark.t -> Re.Mark.t -> int     end   type 'a gen = unit -> 'a option   val all : ?pos:int -> ?len:int -> Re.re -> string -> Re.Group.t list   val all_gen : ?pos:int -> ?len:int -> Re.re -> string -> Re.Group.t Re.gen   val matches : ?pos:int -> ?len:int -> Re.re -> string -> string list   val matches_gen : ?pos:int -> ?len:int -> Re.re -> string -> string Re.gen   val split : ?pos:int -> ?len:int -> Re.re -> string -> string list   val split_gen : ?pos:int -> ?len:int -> Re.re -> string -> string Re.gen   type split_token = [ `Delim of Re.Group.t | `Text of string ]   val split_full :     ?pos:int -> ?len:int -> Re.re -> string -> Re.split_token list   val split_full_gen :     ?pos:int -> ?len:int -> Re.re -> string -> Re.split_token Re.gen   val replace :     ?pos:int ->     ?len:int ->     ?all:bool -> Re.re -> f:(Re.Group.t -> string) -> string -> string   val replace_string :     ?pos:int ->     ?len:int -> ?all:bool -> Re.re -> by:string -> string -> string   val str : string -> Re.t   val char : char -> Re.t   val alt : Re.t list -> Re.t   val seq : Re.t list -> Re.t   val empty : Re.t   val epsilon : Re.t   val rep : Re.t -> Re.t   val rep1 : Re.t -> Re.t   val repn : Re.t -> int -> int option -> Re.t   val opt : Re.t -> Re.t   val bol : Re.t   val eol : Re.t   val bow : Re.t   val eow : Re.t   val bos : Re.t   val eos : Re.t   val leol : Re.t   val start : Re.t   val stop : Re.t   val word : Re.t -> Re.t   val not_boundary : Re.t   val whole_string : Re.t -> Re.t   val longest : Re.t -> Re.t   val shortest : Re.t -> Re.t   val first : Re.t -> Re.t   val greedy : Re.t -> Re.t   val non_greedy : Re.t -> Re.t   val group : Re.t -> Re.t   val no_group : Re.t -> Re.t   val nest : Re.t -> Re.t   val mark : Re.t -> Re.Mark.t * Re.t   val set : string -> Re.t   val rg : char -> char -> Re.t   val inter : Re.t list -> Re.t   val diff : Re.t -> Re.t -> Re.t   val compl : Re.t list -> Re.t   val any : Re.t   val notnl : Re.t   val alnum : Re.t   val wordc : Re.t   val alpha : Re.t   val ascii : Re.t   val blank : Re.t   val cntrl : Re.t   val digit : Re.t   val graph : Re.t   val lower : Re.t   val print : Re.t   val punct : Re.t   val space : Re.t   val upper : Re.t   val xdigit : Re.t   val case : Re.t -> Re.t   val no_case : Re.t -> Re.t   val pp : Format.formatter -> Re.t -> unit   val pp_re : Format.formatter -> Re.re -> unit   val print_re : Format.formatter -> Re.re -> unit   val witness : Re.t -> string   type substrings = Re.Group.t   val get : Re.Group.t -> int -> string   val get_ofs : Re.Group.t -> int -> int * int   val get_all : Re.Group.t -> string array   val get_all_ofs : Re.Group.t -> (int * int) array   val test : Re.Group.t -> int -> bool   type markid = Re.Mark.t   val marked : Re.Group.t -> Re.Mark.t -> bool   val mark_set : Re.Group.t -> Re.Mark.Set.t end