SunshinePHP Developer Conference 2015


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-characters outside square brackets
\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
Part of a pattern that is in square brackets is called a character class. In a character class the only meta-characters are:
Meta-characters inside square brackets (character classes)
\general escape character
^negate the class, but only if the first character
-indicates character range
The following sections describe the use of each of the meta-characters.

add a note add a note

User Contributed Notes 1 note

ruben dot santacruz at gmail dot com
1 year ago
Note that if you want to match the dollar character and you are using a double quoted string for defining the pattern, you should use \$ but you need to escape both the backslash and the dollar sign itself.

This is because inside a double quoted string PHP will interpret the \$ sequence as a single $ character.

To match "$5.00" in "I owe you $5.00 exactly", the "/\$5\.00/" pattern will become  "/$5\.00" that it is not the desired pattern. It should be "/\\\$5\.00/" that will become "/\$5\.00/".

My recommendation is to always keep this in mind or use single quoted strings, because single quotes has less escape sequences interpreted.
To Top