Example of how to use this module (to parse some IRC logs):
type msg = {
time:string;
author:string;
content:string;
}
let re = Core.compile (Re_posix.re "([^:].*:[^:]*:[^:]{2})<.([^>]+)> (.+)$")
(* parse a line *)
let match_line line =
try
let substrings = Core.exec re line in
let groups = Core.get_all substrings in
(* groups can be obtained directly by index within [substrings] *)
Some {time=groups.(1); author=groups.(2); content=groups.(3)}
with Not_found ->
None (* regex didn't match *)
XXX Character classes
exceptionParse_error
exceptionNot_supported
Errors that can be raised during the parsing of the regular expression
type opt = [
| `ICase
| `NoSub
| `Newline
]
val re : ?opts:opt list->string ->Dune_re__.Core.t
Parsing of a Posix extended regular expression
val compile : Dune_re__.Core.t->Dune_re__.Core.re
Regular expression compilation
val compile_pat : ?opts:opt list->string ->Dune_re__.Core.re
compile r is defined as Core.compile (Core.longest r)