RegExp
{: .-three-column}
Character classes
| Pattern | Description |
|---|
. | Any character, except newline |
\w | Word |
\d | Digit |
\s | Whitespace |
\W | Not word |
\D | Not digit |
\S | Not whitespace |
[abc] | Any of a, b, or c |
[a-e] | Characters between a and e |
[1-9] | Digit between 1 and 9 |
[[:print:]] | Any printable character including spaces |
[^abc] | Any character except a, b or c |
Anchors
| Pattern | Description |
|---|
\G | Start of match |
^ | Start of string * |
$ | End of string * |
\A | Start of string |
\Z | End of string |
\z | Absolute end of string |
\b | A word boundary |
\B | Non-word boundary |
^abc | Start with abc |
abc$ | End with abc |
For multiline patterns (m flag), ^ and $ will act as start and end of line.
Escaped characters
| Pattern | Description |
|---|
\. \* \\ | Escape special character used by regex |
\t | Tab |
\n | Newline |
\r | Carriage return |
Groups
| Pattern | Description |
|---|
(abc) | Capture group |
| `(a | b)` |
(?:abc) | Match abc, but don't capture |
\1 | Substituted with text matched of the 1st capturing group |
Quantifiers
| Pattern | Description |
|---|
a* | Match 0 or more |
a+ | Match 1 or more |
a? | Match 0 or 1 |
a{5} | Match exactly 5 |
a{,3} | Match up to 3 |
a{3,} | Match 3 or more |
a{1,3} | Match between 1 and 3 |
Lookahead & Lookbehind
| Pattern | Description |
|---|
a(?=b) | Match a in baby but not in bay |
a(?!b) | Match a in Stan but not in Stab |
| --- | --- |
(?<=a)b | Match b in crabs but not in cribs |
(?<!a)b | Match b in fib but not in fab |