Regular Expression Cheat Sheet

Anchors

^Start of string, or start of line in multi-line pattern
\AStart of string
$End of string, or end of line in multi-line pattern
\ZEnd of string
\bWord boundary
\BNot word boundary
\<Start of word
\>End of word

Character Classes

\cControl character
\sWhite space
\SNot white space
\dDigit
\DNot digit
\wWord
\WNot word
\xHexade­cimal digit
\OOctal digit

POSIX

[:upper:]Upper case letters
[:lower:]Lower case letters
[:alpha:]All letters
[:alnum:]Digits and letters
[:digit:]Digits
[:xdigit:]Hexade­cimal digits
[:punct:]Punctu­ation
[:blank:]Space and tab
[:space:]Blank characters
[:cntrl:]Control characters
[:graph:]Printed characters
[:print:]Printed characters and spaces
[:word:]Digits, letters and underscore

Assertions

?=Lookahead assertion
?!Negative lookahead
?<=Lookbehind assertion
?!= or ?<!Negative lookbehind
?>Once-only Subexp­ression
?()Condition [if then]
?()|Condition [if then else]
?#Comment

 

Quantifiers

*0 or more{3}Exactly 3
+1 or more{3,}3 or more
?0 or 1{3,5}3, 4 or 5

Add a ? to a quantifier to make it ungreedy.

Escape Sequences

\Escape following character
\QBegin literal sequence
\EEnd literal sequence

"­Esc­api­ng" is a way of treating characters which have a special meaning in regular expres­sions literally, rather than as special charac­ters.

Common Metacharacters

^ [ . $ { * ( \ + ) | ? < >

The escape character is usually\

Special Characters

\nNew line
\rCarriage return
\tTab
\vVertical tab
\fForm feed
\xxxOctal character xxx
\xhhHex character hh

 

Groups and Ranges

.Any character except new line (\n)
(a|b)a or b
(...)Group
(?:...)Passive (non-c­apt­uring) group
[abc]Range (a or b or c)
[^abc]Not a or b or c
[a-q]Lower case letter from a to q
[A-Q]Upper case letter from A to Q
[0-7]Digit from 0 to 7
\xGroup/­sub­pattern number "­x"

Ranges are inclusive.

Pattern Modifiers

gGlobal match
i *Case-i­nse­nsitive
m *Multiple lines
s *Treat string as single line
x *Allow comments and whitespace in pattern
e *Evaluate replac­ement
U *Ungreedy pattern

* PCRE modifier

String Replacement

$nnth non-pa­ssive group
$2"­xyz­" in /^(abc­(xy­z))$/
$1"­xyz­" in /^(?:a­bc)­(xyz)$/
$`Before matched string
$'After matched string
$+Last matched string
$&Entire matched string

Some regex implem­ent­ations use \ instead of $.