12.7. Extended Regular Expressions

Extended regular expressions were introduced in Section 8.4. vile provides essentially the same facilities as nvi's extended option. The syntax is somewhat different though, relying upon additional backslash-escaped characters:

\|

Indicates alternation, house\|home.

\+

Matches one or more of the preceding regular expression.

\?

Matches zero or one of the preceding regular expression.

\(...\)

Provides grouping for *, \+, and \?, as well as making matched sub-texts available in the replacement part of a substitute command (\1, \2, etc.).

\s \S

Match whitespace and non-whitespace characters, respectively.

\w \W

Match "word-constituent" characters (alphanumerics and the underscore, `_') and non-word-constituent characters, respectively. For example, \w\+ would match C/C++ identifiers and keywords.[4]

[4] For the pedantic among you, it also matches identifiers that start with a leading digit; usually this isn't much of a problem.

\d \D

Match digits and non-digits, respectively.

\p \P

Match printable and non-printable characters respectively. Whitespace is considered to be printable.

vile allows the escape sequences \b, \f, \r, \t, and \n to appear in the replacement part of a substitute command. They stand for backspace, formfeed, carriage return, tab and newline, respectively. Also, from the vile documentation:

Note that vile mimics perl's handling of \u\L\1\E instead of vi's. Given :s/\(abc\)/\u\L\1\E/ vi will replace with ...

Get Learning the vi Editor, Sixth Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.