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:
\|
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.[
]
\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 abc
whereas vile
and perl
will replace with Abc
.
This is somewhat more useful for capitalizing words.