Шпаргалка з основ регулярних виразів
Регулярний вираз (regex) — це шаблон для пошуку тексту. Кожен символ, або токен, змінює поведінку шаблону. Шпаргалка нижче перелічує найвживаніші токени з простим поясненням і невеличким прикладом для копіювання.
| Токен | Значення | Приклад |
|---|---|---|
| . | Matches any single character except newline. | a.c matches abc, a c |
| * | Matches the preceding token zero or more times. | ab* matches a, abb |
| + | Matches the preceding token one or more times. | ab+ matches ab, abb |
| ? | Makes the preceding token optional (zero or one). | colou?r matches color, colour |
| [] | Character set: matches any one character inside. | [aeiou] matches any vowel |
| [^] | Negated set: matches any character NOT inside. | [^0-9] matches any non-digit |
| \d | Matches any digit (0-9). | \d+ matches 42, 007 |
| \w | Matches any word character (a-z, A-Z, 0-9, _). | \w+ matches hello_1 |
| \s | Matches any whitespace (space, tab, newline). | a\sb matches a b |
| ^ | Anchors the match to the start of a line/string. | ^Hello matches start of string |
| $ | Anchors the match to the end of a line/string. | world$ matches end of string |
| | | Alternation: matches the pattern on either side. | cat|dog matches cat or dog |
| () | Groups a sub-pattern (and captures it). | (ab)+ matches ab, abab |
| {n,m} | Quantifier: match the preceding token n to m times. | a{2,4} matches aa, aaaa |
| (?i) | Inline flag: makes the pattern case-insensitive. | (?i)hello matches HELLO |
Примітки
- Усередині набору символів [ ] більшість токенів втрачає спеціальний зміст. Наприклад, . у [ ] збігається просто з крапкою.
- Зворотна похила (\) — escape-символ: робить спеціальний токен буквальним і навпаки.
- Рушії відрізняються: Python, JavaScript, PCRE та Golang мають спільні токени, але підтримка прапорів і look-around різниться.
Часті запитання
- З чим збігається крапка (.) ?
- Типово крапка збігається з будь-яким одним символом, крім переведення рядка. Щоб збіглася сама крапка, її екранують як \.
- У чому різниця між * і + ?
- Зірочка * збігається з попереднім токеном нуль і більше разів, тому 'ab*' збігається й з 'a'. Плюс + потребує принаймні один раз — збігається з 'ab', але не з самим 'a'.
- Як збігти цифру або літерно-цифровий символ?
- Скористайтеся \d для будь-якої цифри (0-9) і \w для символу слова (літери, цифри, підкреслення). Заперечення — \D і \W.
- Для чого потрібні ^ і $ ?
- ^ прив'язує збіг до початку рядка або тексту, $ — до кінця. Разом ^шаблон$ змушує збігтися весь текст цілком.