sig   type t   type re   type substrings   val compile : Re.t -> Re.re   val exec : ?pos:int -> ?len:int -> Re.re -> string -> Re.substrings   val execp : ?pos:int -> ?len:int -> Re.re -> string -> bool   val exec_partial :     ?pos:int ->     ?len:int -> Re.re -> string -> [ `Full | `Mismatch | `Partial ]   val get : Re.substrings -> int -> string   val get_ofs : Re.substrings -> int -> int * int   val get_all : Re.substrings -> string array   val get_all_ofs : Re.substrings -> (int * int) array   val test : Re.substrings -> int -> bool   type markid   module MarkSet :     sig       type elt = markid       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 marked : Re.substrings -> Re.markid -> bool   val mark_set : Re.substrings -> Re.MarkSet.t   type 'a gen = unit -> 'a option   val all : ?pos:int -> ?len:int -> Re.re -> string -> Re.substrings list   val all_gen :     ?pos:int -> ?len:int -> Re.re -> string -> Re.substrings 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.substrings | `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.substrings -> 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.markid * 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 print_re : Format.formatter -> Re.re -> unit end