Referring to Wildcards: Back-Referencing
We have seen that we can find, say, words that contain two consecutive vowels; the expression \w*[aeiouy][aeiouy]\w* does that. This finds words like tough, blood, clear, and too. But what if we want to find words with two consecutive identical vowels, so that we find blood and too, but not lead and tea? What we’re after is something like “Find a word with a vowel followed by that same vowel.” This is possible in a GREP expression:
\w*([aeiouy])\1\w*
This expression is analyzed as follows:
\w* |
any word characters |
([aeiouy]) |
capture any vowel |
\1 |
match that same vowel |
\w* |
any word characters |
The expression differs from the first one (\w*[aeiouy][aeiouy]\w*) in two respects. First, the vowel wildcard is in parentheses. Like earlier examples of parentheses, they group something—even though the group consists of just one element, namely a character class. But apart from that, the parentheses also create a referent—that is, something that can be referred to. Referrers are numbers preceded by a backslash (the backslash is an escape character here to distinguish the referrer from a normal digit). In the example, \1 refers to the first parenthetical, and it assumes the identity of whatever vowel precedes it. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access