Commands
re-builder
Good for testing your regexp.
Construct a regexp interactively. This command makes the current buffer the "target" buffer of the regexp builder.
As you edit the regexp in the "*RE-Builder*" buffer, the matching parts of the target buffer will be highlighted.
M-x re-builder
; To quit:
M-x reb-quit
; Or: C-c C-q
FAQ
Why two backslashes are needed?
One escape is parsed when the string is read, another is parsed when creating the regular expression. When you're trying to match a literal backslash '\', you end up having to do it four times '\\\\' because you have to double-slash to match the slash in both the initial string parse and the regular expression parse.
(defun wcfHtmlOccur ()
"List all html headers in occur buffer."
(interactive)
(occur "<h[1-6]>.*</h[1-6]>\\|<article>")
)
; Find in Yaml
"^ [a-zA-Z0-9_]+:"
The “or” operator is \|. Strings and regexps are orthogonal in Emacs Lisp, so if you put a regexp in a string, you need to write e.g. "True\\|False".
Emacs has 2 escaping styles, one in EmacsLisp the other when used in commands, ie. from the M-x prompt (rgrep, occur, ...)
In EmacsLisp, use the double backslash \\|
From M-x ... use a single backslash \|
As a side note, when writing embedded EmacsLisp, for example in yasnippet dynamic expansions, you have to use a quadruple backslash: \\\\| (to escape the double backslashes.)
Always avoid this (if possible), for example in yasnippet you can provide mode related emacslisp, without the additional escaping, via a .yas-setup.el.
For further details, see:
M-: (info "(elisp) Regexp Special") RET