Regular expressions

Regular expression grouping

Terms in an editor regular expression can be grouped together using \( and \). Any regular expression so constructed is treated as an identifiable unit in a larger regular expression, and can be referred to later in a search/replace expression by the editor.

This is a particularly useful mechanism. Each regular expression enclosed between escaped brackets is treated as a positional parameter. For example, in the regular expression \([Tt]he\).*\(fox\) the first grouped expression matches the words ``The'' or ``the''. It is followed by an indeterminate string of any characters, then a second grouped expression matching only the word ``fox''.

The first grouped expression may be referred to in the editor expression as \1, the second expression as \2, and so on. For an illustration of how this can be used to swap the order of regular expressions during a search and replace operation, see ``Manipulating text with sed''.

Grouping can be used to search for words separated by white space (tabs or spaces). For example, suppose you want to search for the expression above, where the words are separated by white space. You could construct a pattern like this:


The middle group, \([<Tab><Enter><Space>]\{1,100\}\), is a group consisting of the set of space, tab and newline characters, matched from one to one hundred times. Thus, it will match from one to one hundred white space characters as a group separating ``The'' and ``fox''.

When a program that uses regular expressions tries to find a match, it searches for a string that matches the first group. If it finds a match, it then tries to match up the second group, then the third, and so on. A complete match is only confirmed when all the expressions in a group are correctly matched to a string of consecutive characters in the target file.

Next topic: Precedence in regular expressions
Previous topic: Escaping metacharacters

© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003