Module Pcre2

type error =
  1. | Partial
  2. | BadPattern of string * int
  3. | BadUTF
  4. | BadUTFOffset
  5. | MatchLimit
  6. | DepthLimit
  7. | WorkspaceSize
  8. | InternalError of string
exception Error of error
exception Backtrack
exception Regexp_or of string * error
type icflag
and irflag
and cflag = [
  1. | `ALLOW_EMPTY_CLASS
  2. | `ALT_BSUX
  3. | `ALT_CIRCUMFLEX
  4. | `ALT_VERBNAMES
  5. | `ANCHORED
  6. | `AUTO_CALLOUT
  7. | `CASELESS
  8. | `DOLLAR_ENDONLY
  9. | `DOTALL
  10. | `DUPNAMES
  11. | `ENDANCHORED
  12. | `EXTENDED
  13. | `EXTENDED_MORE
  14. | `FIRSTLINE
  15. | `LITERAL
  16. | `MATCH_INVALID_UTF
  17. | `MATCH_UNSET_BACKREF
  18. | `MULTILINE
  19. | `NEVER_BACKSLASH_C
  20. | `NEVER_UCP
  21. | `NEVER_UTF
  22. | `NO_AUTO_CAPTURE
  23. | `NO_AUTO_POSSESS
  24. | `NO_DOTSTAR_ANCHOR
  25. | `NO_START_OPTIMIZE
  26. | `NO_UTF_CHECK
  27. | `UCP
  28. | `UNGREEDY
  29. | `USE_OFFSET_LIMIT
  30. | `UTF
]
val cflags : cflag list -> icflag
val cflag_list : icflag -> cflag list
type rflag = [
  1. | `ANCHORED
  2. | `COPY_MATCHED_SUBJECT
  3. | `DFA_RESTART
  4. | `DFA_SHORTEST
  5. | `ENDANCHORED
  6. | `NOTBOL
  7. | `NOTEMPTY
  8. | `NOTEMPTY_ATSTART
  9. | `NOTEOL
  10. | `NO_JIT
  11. | `NO_UTF_CHECK
  12. | `PARTIAL_HARD
  13. | `PARTIAL_SOFT
]
val rflags : rflag list -> irflag
val rflag_list : irflag -> rflag list
val version : string
val config_unicode : bool
val config_newline : char
val config_match_limit : int
val config_depth_limit : int
val config_stackrecurse : bool
type firstcodeunit_info = [
  1. | `ANCHORED
  2. | `Char of char
  3. | `Start_only
]
type regexp
val options : regexp -> icflag
val size : regexp -> int
val capturecount : regexp -> int
val backrefmax : regexp -> int
val namecount : regexp -> int
val nameentrysize : regexp -> int
val names : regexp -> string array
val firstcodeunit : regexp -> firstcodeunit_info
val lastcodeunit : regexp -> char option
val get_stringnumber : regexp -> string -> int
type chtables
val maketables : unit -> chtables
val regexp : ?limit:int -> ?depth_limit:int -> ?iflags:icflag -> ?flags:cflag list -> ?chtables:chtables -> string -> regexp
val regexp_or : ?limit:int -> ?depth_limit:int -> ?iflags:icflag -> ?flags:cflag list -> ?chtables:chtables -> string list -> regexp
val quote : string -> string
type substrings
val get_subject : substrings -> string
val num_of_subs : substrings -> int
val get_substring : substrings -> int -> string
val get_substring_ofs : substrings -> int -> int * int
val get_substrings : ?full_match:bool -> substrings -> string array
val get_opt_substrings : ?full_match:bool -> substrings -> string option array
val get_named_substring : regexp -> string -> substrings -> string
val get_named_substring_ofs : regexp -> string -> substrings -> int * int
type callout_data = {
  1. callout_number : int;
  2. substrings : substrings;
  3. start_match : int;
  4. current_position : int;
  5. capture_top : int;
  6. capture_last : int;
  7. pattern_position : int;
  8. next_item_length : int;
}
type callout = callout_data -> unit
val pcre2_match : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> string -> int array
val pcre2_dfa_match : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> ?workspace:int array -> string -> int array
val exec : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> string -> substrings
val exec_all : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> string -> substrings array
val next_match : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> substrings -> substrings
val extract : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?full_match:bool -> ?callout:callout -> string -> string array
val extract_opt : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?full_match:bool -> ?callout:callout -> string -> string option array
val extract_all : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?full_match:bool -> ?callout:callout -> string -> string array array
val extract_all_opt : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?full_match:bool -> ?callout:callout -> string -> string option array array
val pmatch : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> string -> bool
type substitution
val subst : string -> substitution
val replace : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?itempl:substitution -> ?templ:string -> ?callout:callout -> string -> string
val qreplace : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?templ:string -> ?callout:callout -> string -> string
val substitute_substrings : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> subst:(substrings -> string) -> string -> string
val substitute : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> subst:(string -> string) -> string -> string
val replace_first : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?itempl:substitution -> ?templ:string -> ?callout:callout -> string -> string
val qreplace_first : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?templ:string -> ?callout:callout -> string -> string
val substitute_substrings_first : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> subst:(substrings -> string) -> string -> string
val substitute_first : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?callout:callout -> subst:(string -> string) -> string -> string
val split : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?max:int -> ?callout:callout -> string -> string list
val asplit : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?max:int -> ?callout:callout -> string -> string array
type split_result =
  1. | Text of string
  2. | Delim of string
  3. | Group of int * string
  4. | NoGroup
val full_split : ?iflags:irflag -> ?flags:rflag list -> ?rex:regexp -> ?pat:string -> ?pos:int -> ?max:int -> ?callout:callout -> string -> split_result list
val foreach_line : ?ic:in_channel -> (string -> unit) -> unit
val foreach_file : string list -> (string -> in_channel -> unit) -> unit
val unsafe_pcre2_match : irflag -> regexp -> pos:int -> subj_start:int -> subj:string -> int array -> callout option -> unit
val make_ovector : regexp -> int * int array
val unsafe_pcre2_dfa_match : irflag -> regexp -> pos:int -> subj_start:int -> subj:string -> int array -> callout option -> workspace:int array -> unit