## 32.13. Regular Expressions: Remembering Patterns with \ (, \ ), and \1

Another pattern that requires a special mechanism is searching for repeated words. The expression `[a-z][a-z]` will match any two lowercase letters. If you wanted to search for lines that had two adjoining identical letters, the above pattern wouldn't help. You need a way to remember what you found and see if the same pattern occurs again. In some programs, you can mark part of a pattern using `\(` and `\)`. You can recall the remembered pattern with `\` followed by a single digit.[102] Therefore, to search for two identical letters, use `\([a-z]\)\1`. You can have nine different remembered patterns. Each occurrence of `\(` starts a new pattern. The regular expression to match a five-letter palindrome (e.g., "radar") is: `\([a-z]\)\([a-z]\)[a-z]\2\1`. [Some versions of some programs can't handle `\( \)` in the same regular expression as `\1`, etc. In all versions of sed, you're safe if you use `\( \)` on the pattern side of an s command -- and `\1`, etc., on the replacement side (Section 34.11). -- JP]

> [102]In Perl, you can also use `$1` through `$9` and even beyond, with the right switches, in addition to the backslash mechanism.

-- BB

Copyright © 2003 O'Reilly & Associates. All rights reserved.