Regex Syntax: SSH Patterns

The escape character is a tilde ~. With this you can escape metacharacters to use them in their plain character form.

Tip

In configuration the backslash (\) is used to escape the list separator (',').

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:

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:

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.