56 lines
1.7 KiB
Markdown
56 lines
1.7 KiB
Markdown
|
# Regular expression
|
||
|
|
||
|
Read [Syntax](https://github.com/google/re2/wiki/Syntax).
|
||
|
|
||
|
Read [Golang-Regex-Tutorial](https://github.com/StefanSchroeder/Golang-Regex-Tutorial).
|
||
|
|
||
|
Play with [Regex101](https://regex101.com/).
|
||
|
|
||
|
## Basic
|
||
|
|
||
|
| regex | meaning |
|
||
|
| ------------ | ----------------------------------------- |
|
||
|
| `.` | any character, default not including `\n` |
|
||
|
| `[xy]` | `x` or `y` character |
|
||
|
| `[^xy]` | not `x` and `y` character |
|
||
|
| `x`\|`y` | `x` or `y` |
|
||
|
| `x*` | 0 or more `x`, prefer **more** |
|
||
|
| `x+` | 1 or more `x`, prefer **more** |
|
||
|
| `x?` | 0 or 1 `x` , prefer 1 |
|
||
|
| `x*?` | 0 or more `x`, prefer **fewer** |
|
||
|
| `x+?` | 1 or more `x`, prefer **fewer** |
|
||
|
| `^` | at beginning of text |
|
||
|
| `$` | at end of text |
|
||
|
| `\d` | digits |
|
||
|
| `\D` | not digits |
|
||
|
| `\s` | whitespace |
|
||
|
| `\S` | not whitespace |
|
||
|
| `(foo)` | numbered capturing group (submatch) |
|
||
|
| `(?:foo)` | non capturing group |
|
||
|
| `(?:x`\|`y)` | `x` or `y` expression wrap in `()` |
|
||
|
| `(?flags)` | set flags within current group |
|
||
|
|
||
|
| flag | meaning |
|
||
|
| ---- | ---------------- |
|
||
|
| `i` | case-insensitive |
|
||
|
| `s` | `.` match `\n` |
|
||
|
|
||
|
## Example
|
||
|
|
||
|
```regex
|
||
|
(?i)hello\sfoo
|
||
|
|
||
|
match: Hello Foo
|
||
|
match: heLLo fOO
|
||
|
```
|
||
|
|
||
|
```regex
|
||
|
hello\s(.+)
|
||
|
|
||
|
match: hello foo
|
||
|
group 1: foo
|
||
|
|
||
|
match: hello bar
|
||
|
group 1: bar
|
||
|
```
|