php[world] in Washington, D.C.


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
10 months 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