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 "^")
             (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 (71)

rx(REGEXPS...)
rx--all-string-branches-p(FORMS)
rx--atomic-regexp(ITEM)
rx--bracket(REXP)
rx--char-alt-union(A B)
rx--check-repeat-arg(NAME MIN-ARGS BODY)
rx--collect-or-strings(FORMS)
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(FORM)
rx--expand-def-symbol(SYMBOL)
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--human-readable(FORM)
rx--intersection-intervals(FORMS)
rx--interval-set-complement(IVS)
rx--interval-set-intersection(IVS-A IVS-B)
rx--interval-set-union(IVS-A IVS-B)
rx--lookup-def(NAME)
rx--make-binding(NAME TAIL)
rx--make-named-binding(BINDSPEC)
rx--normalise-char-pattern(FORM)
rx--optimise-or-args(ARGS)
rx--parse-any(BODY)
rx--pcase-expand(REGEXPS)
rx--pcase-macroexpander(&rest REGEXPS)
rx--pcase-transform(RX)
rx--reduce-right(F L)
rx--reduce-to-char-alt(FORM)
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-char-alt(NEGATED BODY)
rx--translate-compat-form(DEF FORM)
rx--translate-compat-form-entry(ORIG-FORM ENTRY)
rx--translate-compat-symbol-entry(ENTRY)
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-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)