1. Anchors ============================================================================= ^ Start of string, or start of multi-line pattern \A Start of string $ End of string, or end of multi-line pattern \Z End of string \b Word boundary \B Not word boundary \< Start of word \> End of word 2. Character Classes ============================================================================= \c Control character \s White space \S Not white space \d Digit \D Not digit \w Word \W Not word \x Hexadecimal digit \O Octal digit 3. Posix ============================================================================= [:upper:] Upper case letters [:lower:] Lower case letters [:alpha:] All letters [:alnum:] Digits & letters [:digit:] Digits [:xdigit:] Hexadecimal digits [:punct:] punctuation [:blank:] space and tab [:cntrl:] Control characters [:graph:] Printed characters [:print:] Printed characters [:word:] Digits, letters and underscore 4. Assertions ============================================================================= ?= Lookahead assertion ?! Negative lookahead ?<= Lookbehind assertion ?!= or ? Once-only subexpression ?() Condition [if then] ?()| Condition [if then else] ?# Comment 5. Quantifiers ============================================================================= * 0 or more + 1 or more ? 0 or 1 {3} Exactly 3 {3,} 3 or more {3,5 3, 4 or 5 add a ? to a quantifier to make it ungreedy 6. Escape Sequences ============================================================================= \ Escape following characters \Q Begin literal sequence \E End literal sequence "Escaping" is a way of treating characters which have a special meaning in regex literaly, rather than as special characters. 7. Common metacharacters ============================================================================= ^ [ . $ { * ( ) \ + | ? < > The escape charater is usually \ 8. Special Characters ============================================================================= \n Newline \r Carriage return \t Tab \v Vertical tab \f Form feed \xxx Octal character xxx \xhh Hex character hh 9. Groups and ranges ============================================================================= . Any character exept newline (\n) (a|b) A or b (...) Group (?:...) Passive (non-capturing) group [abc] Range (a or b or c) [^abc] not range (not a or b or c) [a-q] lower case letter a to q [A-Q] upper case letter a to q [0-7] Digit 0-7 \x Group/subpattern number x Ranges are inclusive 10. Pattern modifiers ============================================================================= g Global match i * case-insensitive m * multiple lines s * Treat string as single line x * allow comments and whitespace in pattern e * Evaluate replacement U * ungreedy pattern (* = PCRE modifier) 11. String Replacement ============================================================================= $n nth non-passive group $2 "xyz" in /^(abc(xyz))$/ $1 "xyz" in /^(?:abc)(xyz)$/ $` Before matched string $' After matced string $+ Last matched string $& Entire matched string (Some regex implementations use \ instead of $