• SatyrSack@lemmy.sdf.org
      link
      fedilink
      arrow-up
      23
      ·
      edit-2
      4 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 |