sig
  module Pcre :
    sig
      type regexp = Re.re
      val regexp : ?flags:[< `CASELESS ] list -> string -> Re.re
      val extract : rex:Re.re -> string -> string array
      val exec : rex:Re.re -> ?pos:int -> string -> Re.substrings
      val get_substring : Re.substrings -> int -> string
      val get_substring_ofs : Re.substrings -> int -> int * int
      val pmatch : rex:Re.re -> string -> bool
      val substitute :
        rex:Re.re -> subst:(string -> string) -> string -> string
      val split : rex:Re.re -> string -> string list
      val string_unsafe_sub : string -> int -> int -> string
      val quote : string -> string
    end
  val re_semver : Re.re
  val parse : string -> string * string * string * string
  val compare : string -> string -> int
  val equal : string -> string -> bool
end