116 lines
2.5 KiB
Markdown
116 lines
2.5 KiB
Markdown
|
---
|
|||
|
obj: concept
|
|||
|
aliases: ["Regular Expression"]
|
|||
|
wiki: https://en.wikipedia.org/wiki/Regular_expression
|
|||
|
---
|
|||
|
|
|||
|
# Regex
|
|||
|
A regular expression (shortened as regex or regexp), is a sequence of characters that specifies a match pattern in text. Usually such patterns are used by string-searching algorithms for "find" or "find and replace" operations on strings, or for input validation.
|
|||
|
|
|||
|
## Anchors
|
|||
|
### `^`
|
|||
|
Matches the beginning of the string or line.
|
|||
|
Example: `^word`
|
|||
|
|
|||
|
### `$`
|
|||
|
Matches the end of the string or line.
|
|||
|
Example: `\.txt$`
|
|||
|
|
|||
|
## Flags
|
|||
|
- `i`: Makes the expression case insensitive
|
|||
|
- `g`: Ensures that the expression does not stop on the first match
|
|||
|
|
|||
|
## Group & References
|
|||
|
### `()`
|
|||
|
Groups an expression.
|
|||
|
Example: `(ha)+`
|
|||
|
|
|||
|
### `\1`
|
|||
|
References a grouped expression. `\1` references the first group, `\2` the second and so on.
|
|||
|
Example: `(ha)\s\1`
|
|||
|
|
|||
|
### `(?:)`
|
|||
|
Makes a grouping that cannot be referenced.
|
|||
|
Example: `(?:ha)+`
|
|||
|
|
|||
|
## Character Classes
|
|||
|
### `[abc]`
|
|||
|
Matches any character in the set.
|
|||
|
Example: `b[eo]r`
|
|||
|
|
|||
|
### `[^abc]`
|
|||
|
Matches any character not in the set.
|
|||
|
Example: `b[^eo]r`
|
|||
|
|
|||
|
### `[a-z]`
|
|||
|
Matches all characters between two characters, including themselves.
|
|||
|
Example: `[e-i]`
|
|||
|
|
|||
|
### `.`
|
|||
|
Matches any character except line breaks.
|
|||
|
|
|||
|
### `\w`
|
|||
|
Matches any alphanumeric character. Including the underline.
|
|||
|
|
|||
|
### `\W`
|
|||
|
Matches any non-alphanumeric character.
|
|||
|
|
|||
|
### `\d`
|
|||
|
Matches any numeric character.
|
|||
|
|
|||
|
### `\D`
|
|||
|
Matches any non-numeric character.
|
|||
|
|
|||
|
### `\s`
|
|||
|
Matches any whitespace character.
|
|||
|
|
|||
|
### `\S`
|
|||
|
Matches any non-whitespace character.
|
|||
|
|
|||
|
## Lookarounds
|
|||
|
### `(?=)`
|
|||
|
Positive Lookahead.
|
|||
|
Example: `\d(?=after)`
|
|||
|
|
|||
|
### `(?!)`
|
|||
|
Negative Lookahead.
|
|||
|
Example: `\d(?!after)`
|
|||
|
|
|||
|
### `(?<=)`
|
|||
|
Positive Lookbehind.
|
|||
|
Example: `(?<=behind)\d`
|
|||
|
|
|||
|
### `(?<!)`
|
|||
|
Negative Lookbehind.
|
|||
|
Example: `(?<!behind)\d`
|
|||
|
|
|||
|
## Quantifiers And Alternation
|
|||
|
### `+`
|
|||
|
Expression matches one or more.
|
|||
|
Example: `be+r`
|
|||
|
|
|||
|
### `*`
|
|||
|
Expression matches zero or more.
|
|||
|
Example: `be*r`
|
|||
|
|
|||
|
### `{}`
|
|||
|
Expression matches within specified ranges (matches this many times):
|
|||
|
- Match exactly: `{4}`
|
|||
|
- Match minimum: `{4,}`
|
|||
|
- Match between: `{4,9}`
|
|||
|
Example: `be{1,2}r`
|
|||
|
|
|||
|
### `?`
|
|||
|
Makes the expression optional or lazy.
|
|||
|
Example: `colou?r`
|
|||
|
|
|||
|
### `|`
|
|||
|
Works like OR. It waits for one of the expressions it reserved to match.
|
|||
|
Example: `(c|r)at`
|
|||
|
|
|||
|
## Common Regular Expressions
|
|||
|
- IPv4-Address: `\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}`
|
|||
|
- MAC-Address: `(?:[0-9a-fA-F]{2}\:){5}[0-9a-fA-F]{2}`
|
|||
|
- Hex Color Codes: `^#?([a-fA-F0-9]{6})$`
|
|||
|
- Mail Address: `^([a-zA-Z0–9._%-]+@[a-zA-Z0–9.-]+\.[a-zA-Z]{2,6})*$`
|