The power of regular expressions comes from the ability to include alternatives and repetitions in the pattern. These are encoded in the pattern by the use of meta-characters, which do not stand for themselves but instead are interpreted in some special way.
There are two different sets of meta-characters: those that are recognized anywhere in the pattern except within square brackets, and those that are recognized in square brackets. Outside square brackets, the meta-characters are as follows:
| Meta-character | Description | 
|---|---|
| \ | general escape character with several uses | 
| ^ | assert start of subject (or line, in multiline mode) | 
| $ | assert end of subject or before a terminating newline (or end of line, in multiline mode) | 
| . | match any character except newline (by default) | 
| [ | start character class definition | 
| ] | end character class definition | 
| | | start of alternative branch | 
| ( | start subpattern | 
| ) | end subpattern | 
| ? | extends the meaning of (, also 0 or 1 quantifier, also makes greedy quantifiers lazy (see repetition) | 
| * | 0 or more quantifier | 
| + | 1 or more quantifier | 
| { | start min/max quantifier | 
| } | end min/max quantifier | 
| Meta-character | Description | 
|---|---|
| \ | general escape character | 
| ^ | negate the class, but only if the first character | 
| - | indicates character range |