3.13.1 Regular expression syntax

Matches any single character except a newline. For example,
c.r
matches any three character string starting with
c
and ending with
r
.

*

Matches the previous regexp any number of times (including zero times). For example,
ca*r
matches strings beginning with
c
and ending with
r
, with any number of
a
s in-between.

+

Matches the previous regexp any number of times, but at least once. For example,
ca+r
matches strings beginning with
c
and ending with
r
, with at least one
a
in-between.

?

Matches the previous regexp either 0 or 1 times. For example,
ca?r
matches either the string
cr
or
car
, and nothing else.

^

Matches the next regexp as long as it is at the beginning of a line. For example,
^foo
matches the string
foo
as long as it is at the beginning of a line.

$

Matches the previous regexp as long as it is at the end of a line. For example,
foo$
matches the string
foo
as long as it is at the end of a line.

[ ]

Contains a character set to be used for matching, where the other special characters mentioned do not apply. The empty string is automatically part of the character set. For example,
[a.b]
matches either
a
or
.
or
b
or the empty string. The regexp
c[ad]*r
matches strings beginning with
c
and ending with
r
, with any number of
a
s and
d
s in-between.

The characters
-
and
^
have special meanings inside character sets.
-
defines a range and
^
defines a complement character set. For example,
[a-d]
matches any character in the range
a
to
d
inclusive, and
[^ab]
matches any character except
a
or
b
.

\

Quotes the special characters. For example,
\*
matches the character
*
(that is,
*
has lost its special meaning).

\|

Specifies an alternative. For example,
ab\|cd
matches either
ab
or
cd
.

\( , \)

Provides a grouping construct. For example,
ab\(cd\|ef\)
matches either
abcd
or
abef
.