.

Matches any single character.

[ ]

Indicates a character class. Matches any character inside the
brackets (for example, [abc] matches "a", "b", and "c").

^

If this metacharacter occurs at the start of a character class, it
negates the character class. A negated character class matches any
character except those inside the brackets (for example,
[^abc] matches all characters except "a", "b", and "c").
If ^ is at the beginning of the regular expression, it
matches the beginning of the input (for example,^[abc]
will only match input that begins with "a", "b", or "c").



In a character class, indicates a range of characters (for example,
[09] matches any of the digits "0" through "9").

?

Indicates that the preceding expression is optional: it matches
once or not at all (for example, [09][09]? matches "2"
and "12").

+ 
Indicates that the preceding expression matches one or more times
(for example, [09]+ matches "1", "13", "456", and so on).

* 
Indicates that the preceding expression matches zero or more times.

??, +?, *?

Nongreedy versions of ?, +, and *.
These match as little as possible, unlike the greedy versions that
match as much as possible (for example, given the input
"<abc><def>", <.*?> matches
"<abc>" while <.*> matches
"<abc><def>").

( )

Grouping operator. Example: (\d+,)*\d+ matches a list of
numbers separated by commas (for example, "1" or "1,23,456").

{ }

Indicates a match group.

\

Escape character: interpret the next character literally (for
example, [09]+ matches one or more digits, but [09]\+ matches a digit followed by a plus character).
Also used for abbreviations (such as \a for any
alphanumeric character; see the following table). If \ is followed by a number n, it matches the nth match group (starting from 0). Example: <{.*?}>.*</\0> matches "<head>Contents</head>". 
$

At the end of a regular expression, this character matches the end
of the input (for example,[09]$ matches a digit at the
end of the input).



Alternation operator: separates two expressions, exactly one of
which matches (for example, Tthe matches "The" or "the").

!

Negation operator: the expression following ! does not
match the input (for example, a!b matches "a" not followed
by "b").
