sig
  type t
  type regex = Re2_internal_intf.S.t
  type id_t = [ `Index of int | `Name of string ]
  val index_of_id_exn :
    Re2_internal_intf.S.t -> Re2_internal_intf.S.id_t -> int
  module Options : Options.S
  val create :
    ?options:Options.t list ->
    string -> Re2_internal_intf.S.t Core_kernel.Std.Or_error.t
  val create_exn : ?options:Options.t list -> string -> Re2_internal_intf.S.t
  val of_string : string -> t
  val to_string : t -> string
  val num_submatches : Re2_internal_intf.S.t -> int
  val pattern : Re2_internal_intf.S.t -> string
  val find_all :
    ?sub:Re2_internal_intf.S.id_t ->
    Re2_internal_intf.S.t -> string -> string list Core_kernel.Std.Or_error.t
  val find_all_exn :
    ?sub:Re2_internal_intf.S.id_t ->
    Re2_internal_intf.S.t -> string -> string list
  val find_first :
    ?sub:Re2_internal_intf.S.id_t ->
    Re2_internal_intf.S.t -> string -> string Core_kernel.Std.Or_error.t
  val find_first_exn :
    ?sub:Re2_internal_intf.S.id_t ->
    Re2_internal_intf.S.t -> string -> string
  val find_submatches :
    Re2_internal_intf.S.t ->
    string -> string option array Core_kernel.Std.Or_error.t
  val find_submatches_exn :
    Re2_internal_intf.S.t -> string -> string option array
  val matches : Re2_internal_intf.S.t -> string -> bool
  val split :
    ?max:int ->
    ?include_matches:bool -> Re2_internal_intf.S.t -> string -> string list
  val rewrite :
    Re2_internal_intf.S.t ->
    template:string -> string -> string Core_kernel.Std.Or_error.t
  val rewrite_exn :
    Re2_internal_intf.S.t -> template:string -> string -> string
  val valid_rewrite_template :
    Re2_internal_intf.S.t -> template:string -> bool
  val escape : string -> string
  module Infix :
    sig
      val ( ~/ ) : string -> Re2_internal_intf.S.t
      val ( =~ ) : string -> Re2_internal_intf.S.t -> bool
      val ( //~ ) :
        string -> Re2_internal_intf.S.t -> string Core_kernel.Std.Or_error.t
      val ( //~! ) : string -> Re2_internal_intf.S.t -> string
    end
  module Match :
    sig
      type t
      val get :
        sub:Re2_internal_intf.S.id_t ->
        Re2_internal_intf.S.Match.t -> string option
      val get_exn :
        sub:Re2_internal_intf.S.id_t -> Re2_internal_intf.S.Match.t -> string
      val get_all : Re2_internal_intf.S.Match.t -> string option array
      val get_pos_exn :
        sub:Re2_internal_intf.S.id_t ->
        Re2_internal_intf.S.Match.t -> int * int
      val sexp_of_t : Re2_internal_intf.S.Match.t -> Sexplib.Sexp.t
    end
  val get_matches :
    ?sub:Re2_internal_intf.S.id_t ->
    ?max:int ->
    Re2_internal_intf.S.t ->
    string -> Re2_internal_intf.S.Match.t list Core_kernel.Std.Or_error.t
  val get_matches_exn :
    ?sub:Re2_internal_intf.S.id_t ->
    ?max:int ->
    Re2_internal_intf.S.t -> string -> Re2_internal_intf.S.Match.t list
  val replace :
    ?sub:Re2_internal_intf.S.id_t ->
    ?only:int ->
    f:(Re2_internal_intf.S.Match.t -> string) ->
    Re2_internal_intf.S.t -> string -> string Core_kernel.Std.Or_error.t
  val replace_exn :
    ?sub:Re2_internal_intf.S.id_t ->
    ?only:int ->
    f:(Re2_internal_intf.S.Match.t -> string) ->
    Re2_internal_intf.S.t -> string -> string
  module Exceptions :
    sig
      exception Regex_no_such_subpattern of int * int
      exception Regex_no_such_named_subpattern of string * string
      exception Regex_match_failed of string
      exception Regex_submatch_did_not_capture of string * int
      exception Regex_compile_failed of string
      exception Regex_rewrite_template_invalid of string * string
    end
  val t_of_sexp : Sexplib.Sexp.t -> Re2_internal_intf.S.t
  val sexp_of_t : Re2_internal_intf.S.t -> Sexplib.Sexp.t
  val compare : Re2_internal_intf.S.t -> Re2_internal_intf.S.t -> int
  val bin_t : Re2_internal_intf.S.t Core_kernel.Std.Bin_prot.Type_class.t
  val bin_read_t : Re2_internal_intf.S.t Core_kernel.Std.Bin_prot.Read.reader
  val __bin_read_t__ :
    (int -> Re2_internal_intf.S.t) Core_kernel.Std.Bin_prot.Read.reader
  val bin_reader_t :
    Re2_internal_intf.S.t Core_kernel.Std.Bin_prot.Type_class.reader
  val bin_size_t : Re2_internal_intf.S.t Core_kernel.Std.Bin_prot.Size.sizer
  val bin_write_t :
    Re2_internal_intf.S.t Core_kernel.Std.Bin_prot.Write.writer
  val bin_writer_t :
    Re2_internal_intf.S.t Core_kernel.Std.Bin_prot.Type_class.writer
end