Unix Regular Expressions
We mentioned in the previous section that you can use parentheses to group things for quantifiers, but you can also use them to remember pieces of what you have already matched. That is, a pair of parentheses around a part of a regular expression causes the string's portion that was matched by that part, to be remembered for later use. Take a look at the following regular expressions:
Both regular expressions match as many digits as possible, but in the latter case they will be remembered in a special variable so they can be backreferenced later.
Within the same regular expression, use a backslash followed by an integer as a backreference. The integer corresponding to a given pair of parentheses is determined by counting left parentheses from the beginning of the pattern. The following regular expression matches something similar to an HTML tag (like
The following regular expression matches a string (at least four-characters long) whose first two characters are also its last two characters, but in reverse order (such as
Outside regular expressions, such as in the replacement part of a substitution, this backreference special variable is used as if it were a scalar variable named as an integer (e.g.,
str = str.replace(/(\S+)\s+(\S+)/, "$2 $1");
If you don't have any regular expression background, you probably don't understand any of these functions. We'll introduce the substitution operator in the next section.
RegExp.$## (unless you are referencing it in the regular expression itself or handing it as the second argument to the
replace() method). Since
RegExp is a global object, you can access
RegExp.$2, and so forth, from anywhere in the script. Note that
$2 are local variables in Perl.
$`returns everything before the matched string.
$'returns everything after the matched string.
$+returns whatever the last bracket match matched.
$&returns the entire matched string.
Created: October 23, 1997, 1997
Revised: December 4, 1997