Module Re2__.Regex
include Re2__.Regex_intf.S
Basic Types
include Bin_prot.Binable.S with type t := t
include Bin_prot.Binable.S_only_functions with type t := t
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
This function only needs implementation if
t
exposed to be a polymorphic variant. Despite what the type reads, this does *not* produce a function after reading; instead it takes the constructor tag (int) before reading and reads the rest of the variantt
afterwards.
val bin_shape_t : Bin_prot.Shape.t
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_reader_t : t Bin_prot.Type_class.reader
val bin_t : t Bin_prot.Type_class.t
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
val t_of_sexp : Sexplib0.Sexp.t -> t
val sexp_of_t : t -> Sexplib0.Sexp.t
val hash_fold_t : Base.Hash.state -> t -> Base.Hash.state
val hash : t -> Base.Hash.hash_value
type regex
= t
type id_t
=[
|
`Index of int
|
`Name of string
]
Subpatterns are referenced by name if labelled with the
/(?P<...>...)/
syntax, or else by counting open-parens, with subpattern zero referring to the whole regex.
val index_of_id_exn : t -> id_t -> int
index_of_id t id
resolves subpattern names and indices into indices. *
module Options = Re2.Options
val create : ?options:Options.t -> string -> t Core_kernel.Or_error.t
val create_exn : ?options:Options.t -> string -> t
include Core_kernel.Stringable with type t := t
val num_submatches : t -> int
num_submatches t
returns 1 + the number of open-parens in the pattern.N.B.
num_submatches t == 1 + RE2::NumberOfCapturingGroups()
becauseRE2::NumberOfCapturingGroups()
ignores the whole match ("subpattern zero").
val pattern : t -> string
pattern t
returns the pattern from which the regex was constructed.
val options : t -> Options.t
val find_all : ?sub:id_t -> t -> string -> string list Core_kernel.Or_error.t
find_all t input
a convenience function that returns all non-overlapping matches oft
againstinput
, in left-to-right order.If
sub
is given, and the requested subpattern did not capture, then no match is returned at that position even if other parts of the regex did match.
val find_all_exn : ?sub:id_t -> t -> string -> string list
val find_first : ?sub:id_t -> t -> string -> string Core_kernel.Or_error.t
find_first ?sub pattern input
finds the first match ofpattern
ininput
, and returns the subpattern specified bysub
, or an error if the subpattern didn't capture.
val find_first_exn : ?sub:id_t -> t -> string -> string
val find_submatches : t -> string -> string option array Core_kernel.Or_error.t
find_submatches t input
finds the first match and returns all submatches. Element 0 is the whole match and element 1 is the first parenthesized submatch, etc.
val find_submatches_exn : t -> string -> string option array
val matches : t -> string -> bool
matches pattern input
- returns
true iff
pattern
matchesinput
val split : ?max:int -> ?include_matches:bool -> t -> string -> string list
split pattern input
- returns
input
broken into pieces wherepattern
matches. Subpatterns are ignored.
- parameter max
(default: unlimited) split only at the leftmost
max
matches
- parameter include_matches
(default: false) include the matched substrings in the returned list (e.g., the regex
/[,()]/
on"foo(bar,baz)"
gives["foo"; "("; "bar"; ","; "baz"; ")"]
instead of["foo"; "bar"; "baz"]
)If
t
never matches, the returned list hasinput
as its one element.
val rewrite : t -> template:string -> string -> string Core_kernel.Or_error.t
rewrite pattern ~template input
is a convenience function forreplace
: Instead of requiring an arbitrary transformation as a function, it accepts a template string with zero or more substrings of the form"\\n"
, each of which will be replaced by submatchn
. For every match ofpattern
againstinput
, the template will be specialized and then substituted for the matched substring.
Infix Operators
module Infix : sig ... end
Complicated Interface
val sexp_of_without_trailing_none : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a without_trailing_none -> Ppx_sexp_conv_lib.Sexp.t
val without_trailing_none : 'a -> 'a without_trailing_none
This type marks call sites affected by a bugfix that eliminated a trailing None. When you add this wrapper, check that your call site does not still work around the bug by dropping the last element.
module Match : sig ... end
val get_matches : ?sub:id_t -> ?max:int -> t -> string -> Match.t list Core_kernel.Or_error.t
get_matches pattern input
returns all non-overlapping matches ofpattern
againstinput
- parameter max
(default: unlimited) return only the leftmost
max
matches
- parameter sub
(default: all) returned Match.t's will contain only the first
sub
matches.
val get_matches_exn : ?sub:id_t -> ?max:int -> t -> string -> Match.t list
val to_sequence_exn : ?sub:id_t -> t -> string -> Match.t Core_kernel.Sequence.t
val first_match : t -> string -> Match.t Core_kernel.Or_error.t
first_match pattern input
- returns
the first match iff
pattern
matchesinput
val first_match_exn : t -> string -> Match.t
val replace : ?sub:id_t -> ?only:int -> f:(Match.t -> string) -> t -> string -> string Core_kernel.Or_error.t
replace ?sub ?max ~f pattern input
- returns
an edited copy of
input
with every substring matched bypattern
transformed byf
.
- parameter only
(default: all) replace only the nth match
module Exceptions : sig ... end
module Multiple : sig ... end