Extended regular expressions were introduced in
Section 8.4, "Extended Regular Expressions" in Chapter 8.
Here, we just
summarize the metacharacters that `nvi` provides.
`nvi` also supports the POSIX bracket
expressions, `[[:alnum:]]`

, and so on.

You use `:set extended`

to enable
extended regular expression matching.

`|`

Indicates alternation. The left and right sides need not be just single characters.

`(...)`

Used for grouping, to allow the application of additional regular expression operators.

When

`extended`

is set, text grouped with parentheses acts like text grouped in`\(...\)`

in regular`vi`; the actual text matched can be retrieved in the replacement part of a substitute command with`\1`

,`\2`

, etc. In this case,`\(`

represents a literal left parenthesis.`+`

Matches one or more of the preceding regular expressions. This is either a single character or a group of characters enclosed in parentheses.

`?`

Matches zero or one occurrence of the preceding regular expression.

`{...}`

Defines an

*interval expression*. Interval expressions describe counted numbers of repetitions. In the description below,*n*and*m*represent integer constants.`{`

*n*`}`

Matches exactly

*n*repetitions of the previous regular expression.`{`

*n*`,}`

Matches

*n*or more repetitions of the previous regular expression.`{`

*n*`,`

*m*`}`

Matches

*n*to*m*repetitions.

When

`extended`

is not set,`nvi`provides the same functionality with`\{`

and`\}`

.

As might be expected, when `extended`

is set,
you should precede the above metacharacters with a backslash in
order to match them literally.