The syntax of regular expressions in Emacs is a little disappointing, but the ways you can use regular expressions in Emacs is impressive.
I’ve written before about the syntax of Emacs regular expressions. It’s a pretty conservative subset of the features you may be used to from other environments as summarized in the diagram below.
But there are many, many was to use regular expressions in Emacs. I did a quick search and found that about 15% of the pages in the massive Emacs manual contain at least one reference to regular expressions. Exhaustively listing the uses of regular expressions would not be practical or very interesting. Instead, I’ll highlight a few uses that I find helpful.
Searching and replacing
One of the most frequently used features in Emacs is incremental search. You can search forward or backward for a string, searching as you type, with the commands
isearch-backward). The regular expression counterparts of these commands are
Note that the regular expression commands add the Alt (meta) key to their string counterparts. Also, note that Emacs consistently refers to regular expressions as
regexp and never, as far as I know, as
regex. (Emacs relies heavily on conventions like this to keep the code base manageable.)
A common task in any editor is to search and replace text. In Emacs you can replace all occurrences of a regular expression with
replace-regexp or interactively choose which instances to replace with
You can delete all lines in a file that contain a given regular expression with
flush-lines. You can also invert this command, specifying which lines not to delete with
One lesser-known but handy feature is
align-regexp. This command will insert white space as needed so that all instances of a regular expression in a region align vertically. For example, if you have a sequence of assignment statements in a programming language you could have all the equal signs line up by using
align-regexp with the regular expression consisting simply of an equal sign. Of course you could also align based on a much more complex pattern.
Although I imagine this feature is primarily used when editing source code, I imagine you could use it in other context such as aligning poetry or ASCII art diagrams.
The Emacs directory editor
dired is something like the Windows File Explorer or the OSX Finder, but text-based.
dired has many features that use regular expressions. Here are a few of the more common ones.
You can mark files based on the file names with
% m (
dired-mark-files-regexp) or based on the contents of the files with
% g (
dired-mark-files-containing-regexp). You can also mark files for deletion with
% d (
dired you can search across a specified set of files by typing
dired-do-find-regexp), and you can interactively search and replace across a set of files by typing
The help apropos command (
C-h a) can take a string or a regular expression.
The command to search for available fonts (
list-faces-display) can take a string or regular expression.
Interactive highlighting commands (
highlight-lines-matching-regexp) take a regular expression argument.
You can use a regular expression to specify which buffers to close with
Maybe the largest class of uses for regular expressions in Emacs is configuration. Many customizations in Emacs, such as giving Emacs hints to determine the right editing mode for a file or how to recognize comments in different languages, use regular expressions as arguments.