`sig type regexp = [ `After of CamomileLibrary.URe.regexp | `Alt of CamomileLibrary.URe.regexp * CamomileLibrary.URe.regexp | `Before of CamomileLibrary.URe.regexp | `BoS | `EoS | `Epsilon | `Group of CamomileLibrary.URe.regexp | `OneChar | `Rep of CamomileLibrary.URe.regexp | `Repn of CamomileLibrary.URe.regexp * int * int option | `Seq of CamomileLibrary.URe.regexp * CamomileLibrary.URe.regexp | `Set of CamomileLibrary.USet.t | `String of CamomileLibrary.UChar.t list ] type match_semantics = [ `First | `Longest | `Shortest ] val no_group : CamomileLibrary.URe.regexp -> CamomileLibrary.URe.regexp module type Type = sig type text type index type compiled_regexp module SubText : sig type t val get : t -> int -> UChar.t val init : int -> (int -> UChar.t) -> t val length : t -> int type index val look : t -> index -> UChar.t val nth : t -> int -> index val first : t -> index val last : t -> index val next : t -> index -> index val prev : t -> index -> index val move : t -> index -> int -> index val out_of_range : t -> index -> bool val compare_index : t -> index -> index -> int val iter : (UChar.t -> unit) -> t -> unit val compare : t -> t -> int module Buf : sig type buf val create : int -> buf val contents : buf -> t val clear : buf -> unit val reset : buf -> unit val add_char : buf -> UChar.t -> unit val add_string : buf -> t -> unit val add_buffer : buf -> buf -> unit end type ur_text = text type ur_index = index val refer : ur_text -> ur_index -> ur_index -> t val excerpt : t -> ur_text val context : t -> ur_text * ur_index * ur_index val ur_index_of : t -> index -> ur_index end val compile : CamomileLibrary.URe.regexp -> CamomileLibrary.URe.Type.compiled_regexp val regexp_match : ?sem:CamomileLibrary.URe.match_semantics -> CamomileLibrary.URe.Type.compiled_regexp -> CamomileLibrary.URe.Type.text -> CamomileLibrary.URe.Type.index -> CamomileLibrary.URe.Type.SubText.t option array option val string_match : CamomileLibrary.URe.Type.compiled_regexp -> CamomileLibrary.URe.Type.text -> CamomileLibrary.URe.Type.index -> bool val search_forward : ?sem:CamomileLibrary.URe.match_semantics -> CamomileLibrary.URe.Type.compiled_regexp -> CamomileLibrary.URe.Type.text -> CamomileLibrary.URe.Type.index -> CamomileLibrary.URe.Type.SubText.t option array option end module Make : functor (Text : UnicodeString.Type) -> sig type text = Text.t type index = Text.index type compiled_regexp module SubText : sig type t val get : t -> int -> UChar.t val init : int -> (int -> UChar.t) -> t val length : t -> int type index val look : t -> index -> UChar.t val nth : t -> int -> index val first : t -> index val last : t -> index val next : t -> index -> index val prev : t -> index -> index val move : t -> index -> int -> index val out_of_range : t -> index -> bool val compare_index : t -> index -> index -> int val iter : (UChar.t -> unit) -> t -> unit val compare : t -> t -> int module Buf : sig type buf val create : int -> buf val contents : buf -> t val clear : buf -> unit val reset : buf -> unit val add_char : buf -> UChar.t -> unit val add_string : buf -> t -> unit val add_buffer : buf -> buf -> unit end type ur_text = text type ur_index = index val refer : ur_text -> ur_index -> ur_index -> t val excerpt : t -> ur_text val context : t -> ur_text * ur_index * ur_index val ur_index_of : t -> index -> ur_index end val compile : regexp -> compiled_regexp val regexp_match : ?sem:match_semantics -> compiled_regexp -> text -> index -> SubText.t option array option val string_match : compiled_regexp -> text -> index -> bool val search_forward : ?sem:match_semantics -> compiled_regexp -> text -> index -> SubText.t option array option end end`