Regular Expression Search/Replace in Emacs

I'm a big fan of regular expressions - there's no better way to tweak many multiple instances of an HTML tag or attribute, or change a variable name across a bunch of PHP scripts.

Perl sets the standard, but Emacs also provides regex support quite nicely - the only thing is keeping the subtle differences straight. I'm committing this to the site so that I don't have to keep searching hundreds of Emacs mailing list archives the next time I forget.

When specifying a group or character class in an Emacs, you have to escape the container characters. Take the following Perl regex:

/foo (.*?) bar/

This will match any string that has the words 'foo' and 'bar' and extract the string between them. This is how to format it in Emacs:

foo \(.*?\) bar

If you want to use a backrefence in a regex find/replace, use the format

\n

where n is the matched group you want to substitute. So say you have a buffer containing

foo bat bar

and you did a search for

foo \(.*?\) bar

and replaced it with

foo bar \1

The contents of the buffer will now read

foo bar bat.

Read the Emacs manual page on regexps for more details.

Also

Syndicate content

Twitter

  • Found my misplaced Hero 329! It had been in the truck for a few weeks. #fountainpen 5 years 28 weeks ago
  • Note to speakers & writers of the English language. It's D-R-A-W-E-R, not "draw". They speak english in what? 5 years 28 weeks ago
  • How to compile + install xdebug for entropy.ch PHP5 on OS X Leopard: http://is.gd/4WkwW 5 years 28 weeks ago
  • RT @ebertchicago: Martin Scorsese's list of the Top 11 Horror Films of All Time. http://j.mp/2AfcFX (yep, The Changling is on it) 5 years 28 weeks ago
  • @krazykatmama it's OK, our neighbor saw my plight on Facebook and within 10 minutes came over and brought us cupcakes! 5 years 28 weeks ago

Older

Contact

Andy Chase
(978) 297-6402
andychase [at] gmail.com
GPG/PGP Public Key