From 91ebcf22af627772635cb28edbe6bd19ad22bc07 Mon Sep 17 00:00:00 2001 From: Zakary Timson Date: Mon, 11 Dec 2023 21:50:40 +0000 Subject: [PATCH] Add regex.md --- regex.md | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 regex.md diff --git a/regex.md b/regex.md new file mode 100644 index 0000000..a32c65d --- /dev/null +++ b/regex.md @@ -0,0 +1,112 @@ +# R* Cheatsheet + +## Modifiers + +| Symbol | Description | +|--------|-------------------------------| +| `g` | Global - search entire string | +| `i` | Case-insensitive | +| `m` | Multiple lines | +| `s` | Treat as single line | +| `x` | Allow comments & whitespace | +| `e` | Evaluate placement | +| `U` | Un-greedy patterns by default | + +## Escape + +| Symbol | Description | +|--------|---------------------------| +| `?#` | Comment | +| `\ ` | Escape special characters | +| `\Q` | Begin literal sequence | +| `\E` | End literal sequence | + +## Anchors + +| Symbol | Description | +|--------|-------------------| +| `^` | Start of line | +| `$` | End of line | +| `\A` | Start of string | +| `\Z` | End of string | +| `\b` | Word boundary | +| `\B` | Not word boundary | +| `\<` | Start of word | +| `\>` | End of word | + +## Characters + +| Symbol | POSIX | Description | +|--------|--------------------------------------|------------------------------------------| +| `\c` | `[:cntrl:]` | Control character | +| `\S` | | Not a white space | +| `\s` | `[:blank:]` `[:space:]` | White space | +| | `[:punct:]` | Punctuation | +| `.` | `[:print:]` `[:graph:]` | Printed Character, with & without spaces | +| `\W` | | Not a letter | +| `\w` | `[:alpha:]` `[:upper:]` `[:lower:]` | Letter | +| `\D` | | Not a number | +| `\d` | `[:digit:]` | Number | +| `\x` | `[:xdigit:]` | Hexadecimal digit | +| `\O` | | Octal digit | +| `\n` | | New line | +| `\r` | | Carriage return | +| `\t` | | Tab | +| `\v` | | Vertical tab | +| `\f` | | Form feed | +| `\xxx` | | Octal number "xxx" | +| `\xaa` | | Hexidecimal "aa" | + +## Repeat + +| Symbol | Range | Description | +|----------|-------------|---------------------------------------| +| | `{x}` | Exactly `x` times | +| | `{min,max}` | Repeat between `min` & `max` times | +| `?` | `{,1}` | 0 or 1 | +| `*` `*?` | `{0,}` | 0 or many (Adding `?` make un-greedy) | +| `+` `+?` | `{1,}` | 1 or more (Adding `?` make un-greedy) | + +Un-greedy repeaters will take the minimum number of characters required + +## Group Selectors + +| Symbol | Description | +|----------------|--------------------------------------------| +| `.` | Wildcard/Single character (Except newline) | +| `(abc\|123)` | `abc` or `123` | +| `(...)` | Capture group | +| `(?...)` | Named capture group | +| `(?:...)` | Group un-captured | +| `[abc]` | `A` or `B` or `C` | +| `[^abc]` | Not `A` or `B` or `C` | +| `[0-9]` | Number between `0` and `9` | +| `[a-g]` | Lowercase letter between `a` and `g` | +| `[A-G]` | Uppercase letter between `A` and `G` | + +All selectors are inclusive + +## Reference Group + +| Symbol | Description | +|---------|----------------| +| `$n` | N'th Group | +| `$\` ` | Before matched | +| `$'` | After matched | +| `$+` | Last match | +| `$&` | Entire match | + +Some regex implementations use \ instead of $. + +## Assertions + +| Symbol | Description | +|--------------|-------------------------| +| `?=` | Lookahead | +| `?!` | Negative lookahead | +| `?<=` | Lookbehind | +| `?!=` `?` | Once-only subexpression | +| `?(...)` | If condition | +| `?(...) \| ` | If-else condition | +