Next: Regular Expression Functions, Previous: Complex Regexp Example, Up: Regular Expressions [Contents][Index]
35.3.3 Therx
Structured Regexp Notation
As an alternative to the string-based syntax, Emacs provides the structured rx
notation based on Lisp S-expressions. This notation is usually easier to read, write and maintain than regexp strings, and can be indented and commented freely. It requires a conversion into string form since that is what regexp functions expect, but that conversion typically takes place during byte-compilation rather than when the Lisp code using the regexp is run.
Here is an rx
regexp27 that matches a block comment in the C programming language:
(rx "/*" ; Initial /* (zero-or-more (or (not "*") ; Either non-*, (seq "*" ; or * followed by (not "/")))) ; non-/ (one-or-more "*") ; At least one star, "/") ; and the final /
or, using shorter synonyms and written more compactly,
(rx "/*" (* (| (not "*") (: "*" (not "/")))) (+ "*") "/")
In conventional string syntax, it would be written
"/\\*\\(?:[^*]\\|\\*[^/]\\)*\\*+/"
The rx
notation is mainly useful in Lisp code; it cannot be used in most interactive situations where a regexp is requested, such as when running query-replace-regexp
or in variable customization.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4