Here is my cheatsheet that has been very helpful. Obviously, this will not teach you how RegEx works, but is a good quick reference when I forget the exact syntax for something.
RegExp
Character classes
Pattern | Description |
---|---|
. |
Any character, except newline |
\w |
Word |
\d |
Digit |
\s |
Whitespace |
\W |
Not word |
\D |
Not digit |
\S |
Not whitespace |
[ ] |
Any of a, b, or c |
[ ] |
Characters between a and e |
[ ] |
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 |
|
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) |
Match a or 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 |
(?<![a-z])abc(?![a-z]) |
Match abc without any letters before/after |
Raw Markdown
# RegExp
## 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)` | Match `a` or `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` |
| `(?<![a-z])abc(?![a-z])` | Match `abc` without any letters before/after |
Which runs better, the Ubuntu version or the Windows version through Proton?