this post was submitted on 23 Jul 2025
231 points (100.0% liked)

Programmer Humor

25253 readers
1161 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] SatyrSack@lemmy.sdf.org 23 points 3 days ago* (last edited 3 days ago)

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
[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 |

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 |