This page is intended as a memory-jogger about the different syntax of
Perl and Emacs regular expressions. The Emacs regular expressions
described here are the command-line regular expressions used in things
like replace-regexp
rather than the elisp regular
expressions.
Perl regex | Emacs regex | Notes |
---|---|---|
(, ) | \(, \) | Emacs uses backslashes in the style of "grep" for capturing parentheses, whereas Perl uses the "egrep" style of capturing parentheses without backslashes. |
{, } | \{, \} | Emacs uses backslashes in the style of "grep" for curly brackets used for the number of matches, whereas Perl uses the "egrep" style without backslashes. |
\s | \s- | \s matches whitespace in Perl. In Emacs, \s- matches the whitespace character class. The \s designates a character class and the minus sign makes it the "whitespace" class. |
$1, $2, $3, ... | \1, \2, \3, ... | Emacs puts the results of capturing parentheses into \1, \2, etc. Perl uses a dollar sign, as in $1, $2, etc. |
[, ] | [, ] | Emacs and Perl use the same characters, [ and ], to create character classes. |
\d | [0-9] | Emacs does not have a way to match digits except by using posix
character classes, as in [[:digits:]] . |
\b | \b | Perl and Emacs use the same \b to match word boundaries. |
\w | \w | Perl and Emacs use the same \w character to match word characters. |
Regex Tool is a tool for showing what matches a regex inside Emacs. It works with both Emacs and Perl regular expressions. There is also something called "regexp-builder" in Emacs, but this actually uses a different form of regular expressions (the ones for Emacs Lisp) and so it is not very useful in practice.
A little information on differences at a community website.
A very in-depth guide to Emacs regular expressions, which gets to the point much more rapidly than the meandering Emacs documentation.
A table comparing Emacs Lisp and Perl has a little information about regular expressions.