The escape character is a tilde ~
. With this you can escape metacharacters to
use them in their plain character form.
In the following examples literal E
and F
denote any expression, whether a pattern or a character.
(
Start a capturing subexpression.
)
End a capturing subexpression.
{
Start an anonymous, noncapturing subexpression.
}
End an anonymous, noncapturing subexpression.
E
|F
Disjunction, match either E
or F
(inclusive). E
is preferred if both match.
E*
Act as Kleene star, match E
zero or more times.
E*?
Act as Kleene star, but match nongreedily (lazy match).
E+
Closure, match E one or more times.
E+?
Closure, but match non-greedily (lazy match).
E?
Option, match E optionally once.
E??
Option, but match non-greedily (lazy match).
.
Match ANY character, including possibly the NULL byte and the newline characters.
E/
n
/
Match E
exactly
n
times.
E/
n
,/
or E/
n
,0/
Match E
n
or more times.
E/,
n
/
or
E/0,
n
/
Match E
at most
n
times.
E/
n
,
m
/
Match E
no less than
n
times and no more than
m
times.
E/n,/?
, E/
n
,0/?
, E/,
n
/?
, E/0,
n
/?
, E/
n
,
m
/?
The lazy versions of above.
[
Start a character set. See the section "Escaped Tokens for Regex Syntax SSH."
>C
One-character lookahead. 'C' must be either a literal character or parse as a character set. Match the empty string anywhere provided that the next character is 'C' or belongs to it.
<C
One-character lookback. As above, but examine the previous character instead of the next character.
$
Match the empty string at the end of the input.
^
Match the empty string at the start of the input.
The following list describes the tokens:
~0
n
..
n
The literal byte with octal value
n
..
n
.
~0
The NULL byte.
~[1-9]..
x
The literal byte with decimal value ~[1-9]..
x
.
~
xn
..
n
or
~0
xn
..
n
The literal byte with hexadecimal value
n
..
n
.
~<
Match the empty string at the beginning of a word.
~>
Match the empty string at the end of a word.
~b
Match the empty string at a word boundary.
~B
Match the empty string provided it is not at a word boundary.
~d
Match any digit, equivalent to [0:9].
~D
Match any character except a digit.
~s
Match a whitespace character (matches space, newline, line feed, carriage return, tab, and vertical tab).
~S
Match a nonwhitespace character.
~w
Match a word-constituent character, equivalent to [a:zA:Z0:9-].
~W
Match a non-word-constituent character.
~a
Literal alarm character.
~e
Literal escape character.
~f
Literal line feed.
~n
Literal newline, equivalent to C's \n
so that it can be more than one
character long.
~r
Literal carriage return.
~t
Literal tab.
All other escaped characters denote the literal character itself.
A character set starts with '['
and ends at non-escaped ]'
that is not part of a POSIX character set
specifier and that does not follow immediately after '['
.
The following characters have a special meaning and need to be escaped if meant literally:
:
A range operator, except immediately after [
, where it loses its special
meaning.
-
(minus sign)Until next +, the characters, ranges, and sets will be
subtracted from the current set instead of being added. If
appears as the first character after [
, start subtracting from a set
containing all characters instead of the empty set.
Until next -, the characters, ranges, and sets will be added to the current set. This is the default.
[:alnum:]
Characters for which isalnum
returns true
(see ctype.h).
[:alpha:]
Characters for which isalpha
returns true
(see ctype.h).
[:cntrl:]
Characters for which iscntrl
returns true
(see ctype.h).
[:digit:]
Characters for which isdigit
returns true
(see ctype.h).
[:graph:]
Characters for which isgraph
returns true
(see ctype.h).
[:lower:]
Characters for which islower
returns true
(see ctype.h).
[:print:]
Characters for which isprint
returns true
(see ctype.h).
[:punct:]
Characters for which ispunct
returns true
(see ctype.h).
[:space:]
Characters for which isspace
returns true
(see ctype.h).
[:upper:]
Characters for which isupper
returns true
(see ctype.h).
[:xdigit:]
Characters for which isxdigit
returns true
(see ctype.h).
It is also possible to include the predefined escaped character sets into a newly defined one, so:
[~d~s]
matches digits and whitespace characters.
Also, escape sequences resulting in literals work inside character sets.