File: rx.el.html

This facility allows writing regexps in a sexp-based language instead of strings. Regexps in the rx notation are easier to read, write and maintain; they can be indented and commented in a natural way, and are easily composed by program code. The translation to string regexp is done by a macro and does not incur any extra processing during run time. Example:

 (rx bos (or (not (any "^"))
             (seq "^" (or " *" "["))))

=> "\\\\`\\\\(?:[^^]\\\\|\\\\^\\\\(?: \\\\*\\\\|\\\\[\\\\)\\\\)"

The notation is much influenced by and retains some compatibility with Olin Shivers's SRE, with concessions to Emacs regexp peculiarities, and the older Emacs package Sregex.

Defined variables (7)

rx--builtin-formsList of built-in rx function-like symbols.
rx--builtin-namesList of built-in rx names. These cannot be redefined by the user.
rx--builtin-symbolsList of built-in rx variable-like symbols.
rx--char-classesAlist mapping rx symbols to character classes.
rx--delayed-evaluationWhether to allow certain forms to be evaluated at runtime.
rx--local-definitionsAlist of dynamic local rx definitions.
rx-constituentsAlist of old-style rx extensions, for compatibility.

Defined functions (67)

rx(REGEXPS...)
rx--all-string-or-args(BODY)
rx--atomic-regexp(ITEM)
rx--bracket(REXP)
rx--charset-intersection(CHARSETS)
rx--charset-intervals(CHARSET)
rx--charset-p(FORM)
rx--charset-union(CHARSETS)
rx--check-repeat-arg(NAME MIN-ARGS BODY)
rx--complement-intervals(INTERVALS)
rx--condense-intervals(INTERVALS)
rx--control-greedy(GREEDY BODY)
rx--empty()
rx--enclose(LEFT-STR REXP RIGHT-STR)
rx--every(PRED LIST)
rx--expand-def(FORM)
rx--expand-eval(BODY)
rx--expand-template(OP VALUES ARGLIST TEMPLATE)
rx--extend-local-defs(BINDSPECS)
rx--foldl(F X L)
rx--generate-alt(NEGATED INTERVALS CLASSES)
rx--intersect-intervals(IVS-A IVS-B)
rx--intervals-to-alt(NEGATED INTERVALS)
rx--lookup-def(NAME)
rx--make-binding(NAME TAIL)
rx--make-named-binding(BINDSPEC)
rx--normalise-or-arg(FORM)
rx--parse-any(BODY)
rx--pcase-expand(REGEXPS)
rx--pcase-macroexpander(&rest REGEXPS)
rx--pcase-transform(RX)
rx--reduce-right(F L)
rx--sequence(LEFT RIGHT)
rx--string-to-intervals(STR)
rx--substitute(BINDINGS FORM)
rx--to-expr(FORM)
rx--translate(ITEM)
rx--translate-**(BODY)
rx--translate-=(BODY)
rx--translate->=(BODY)
rx--translate-any(NEGATED BODY)
rx--translate-backref(BODY)
rx--translate-bounded-repetition(NAME BODY)
rx--translate-category(NEGATED BODY)
rx--translate-compat-form(DEF FORM)
rx--translate-counted-repetition(MIN-COUNT MAX-COUNT BODY)
rx--translate-eval(BODY)
rx--translate-form(FORM)
rx--translate-group(BODY)
rx--translate-group-n(BODY)
rx--translate-intersection(NEGATED BODY)
rx--translate-literal(BODY)
rx--translate-not(NEGATED BODY)
rx--translate-or(BODY)
rx--translate-regexp(BODY)
rx--translate-rep(OP-STRING GREEDY BODY)
rx--translate-repeat(BODY)
rx--translate-seq(BODY)
rx--translate-symbol(SYM)
rx--translate-syntax(NEGATED BODY)
rx--translate-union(NEGATED BODY)
rx--union-intervals(IVS-A IVS-B)
rx-define(NAME [(ARGS...)] RX)
rx-let(BINDINGS BODY...)
rx-let-eval(BINDINGS BODY...)
rx-submatch-n(FORM &optional NO-GROUP)
rx-to-string(FORM &optional NO-GROUP)

Defined faces (0)