Extended regular expressions were introduced in
Section 8.4, "Extended Regular Expressions" in Chapter 8.
vile provides essentially the same facilities
as nvi's extended
option. The syntax is somewhat different though, relying upon
additional backslash-escaped characters:
\|
\+
\?
\(...\)
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.[3]
[3] 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
\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 abc whereas vile and perl will replace with Abc. This is somewhat more useful for capitalizing words.