Module Ecaml__.Regexp

A "regular expression", or "regexp" for short, is a pattern that denotes a (possibly infinite) set of strings.

(Info-goto-node "(elisp)Regular Expressions")

include Ecaml.Value.Subtype
type value
type 'a type_
type t = private value

We expose private value for free identity conversions when the value is nested in some covariant type, e.g. (symbols : Symbol.t list :> Value.t list) rather than List.map symbols ~f:Symbol.to_value.

include sig ... end
val sexp_of_t : t ‑> Sexplib.Sexp.t
val of_value_exn : value ‑> t
val to_value : t ‑> value
val eq : t ‑> t ‑> bool

eq t1 t2 = Value.eq (to_value t1) (to_value t2), i.e. eq checks whether the Emacs values underlying t1 and t2 are physically equal. This is different than phys_equal t1 t2, because we don't always wrap eq Emacs values in phys_equal OCaml values. I.e. phys_equal t1 t2 implies eq t1 t2, but not the converse.

val type_ : t type_
val match_anything : t
val match_nothing : t
val of_pattern : string ‑> t

(Info-goto-node "(elisp)Syntax of Regexps")

val to_pattern : t ‑> string
val any : t list ‑> t
val any_pattern : string list ‑> t
val quote : string ‑> t

quote string matches string and nothing else. (describe-function 'regexp-quote)(Info-goto-node "(elisp)Regexp Functions")

val any_quote : string list ‑> t

any_quote strings matches every string in strings, and nothing else. (describe-function 'regexp-opt)(Info-goto-node "(elisp)Regexp Functions")

module Last_match : sig ... end

Supplying ~update_last_match:true to a searching function causes Emacs to keep track of the "last match", i.e. the start and end positions of the segments of text found during the search. One can access parts of the last match via the Last_match functions. subexp is one based. (Info-goto-node "(elisp)Match Data")

val match_ : ?⁠start:int ‑> ?⁠update_last_match:bool ‑> t ‑> Ecaml.Text.t ‑> int option

match_ t text finds the first match of t in text, returns the index of the start of the match. (describe-function 'string-match)(describe-function 'string-match-p)(Info-goto-node "(elisp)Regexp Search")

val does_match : ?⁠start:int ‑> ?⁠update_last_match:bool ‑> t ‑> Ecaml.Text.t ‑> bool

does_match t text is is_some (match_ t text)