Extended regular expressions were introduced in Section 8.4. vile provides essentially the same facilities as nvi's extended option. This includes the POSIX bracket expressions for character classes, [[:alnum::]], with some extensions (additional classes and abbreviations), and interval expressions such as {,10}. The syntax is somewhat different though from nvi, 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.).
Match whitespace and non-whitespace characters, respectively.
Match "word-constituent" characters (alphanumerics and the underscore, `_') and non-word-constituent characters, respectively. For example, \w\+ would match C/C++ identifiers and keywords.[1]
Match digits and non-digits, respectively.
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, form feed, 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.
[1] | For the pedantic among you, it also matches identifiers that start with a leading digit; usually this isn't much of a problem. |