include Re2__.Parser_intf.Parsermodule type S = Re2__.Parser_intf.Sinclude Stype 'a tA value of type 'a t is a regex that parses 'as.
The matching is implemented using Re2.
UTF-8 is supported by Re2 but not by this module. This is because we want to use
char as a character type, but that's just wrong in a multibyte encoding.
include sig ... endval sexp_of_t : ('a ‑> Base.Sexp.t) ‑> 'a t ‑> Base.Sexp.tval compile : ?case_sensitive:bool ‑> 'a t ‑> (string ‑> 'a option) Core_kernel.Staged.tcase_sensitive defaults to true.
val run : ?case_sensitive:bool ‑> 'a t ‑> string ‑> 'a optionval matches : ?case_sensitive:bool ‑> 'a t ‑> string ‑> boolval to_regex_string : _ t ‑> stringto_regex_string and to_re2 both forget what a 'a t knows
about turning the matching strings into 'as
The applicative interface provides sequencing, e.g. both a b is a regex that
parses an a followed by a b and returns both results in a pair.
include Core_kernel.Applicative.S with type a t := a tval return : 'a ‑> 'a tmodule Applicative_infix : sig ... endof_re2 r forgets the options that r was compiled with, instead using
`Encoding_latin1 true, `Dot_nl true, and the case-sensitivity setting of the
overall pattern. You can still try and use '(?flags:re)' Re2 syntax to set options
for the scope of this regex.
The returned values are precisely the captures of the underlying regex, in order:
note that unlike (say) Re2.Match.get_all, the whole match is *not* included (if
you want that, just use capture). Named captures are not accessible by name.
ignore t is a regex which matches the same strings that t matches, but doesn't
call functions on the captured submatches. Particularly, something like ignore (map
(string "x") ~f:Int.of_string) won't raise an exception, because the int conversion
is never attempted.
and_capture t returns the string matched by t in addition to whatever it was
already going to return.
repeat ~min ~max t constructs the regex t{min,max}. min defaults to 0 and
max defaults to None (unbounded), so that just plain repeat t is equivalent
to t*.
It would be better for repeat to be 'a t -> 'a list t, but the re2 library
doesn't give you access to repeated submatches like that. Hence, repeat ignores
all submatches of its argument and does not call any callbacks that may have been
attached to them, as if it had ignore called on its result.
times r n essentially constructs the regex r{n}. It is equivalent to
repeat ~min:n ~max:(Some n) r.
Compare with, say, all (List.init n ~f:(fun _ -> r)), which constructs the regex
rrr...r (with n copies of r) and has the type 'a t -> 'a list t.
val string : string ‑> unit tval any_string : string tmodule Char : sig ... endmodule Decimal : sig ... endmodule Let_syntax : sig ... end