🔤 Регулярні вирази
Шпаргалка: Регулярні вирази
Символи, квантифікатори, класи, групи, прапорці та готові патерни для email, телефону, URL і дати — повна довідка
Основні символи
Буква/цифра/підкреслення
\w
✦ Символ . відповідає будь-якому символу, крім символу нового рядка \n. \s охоплює пробіл, табуляцію та перенос рядка. \S — усе, що не є пробільним символом.
Квантифікатори
✦ Жадібний (greedy) квантифікатор *, + чи ? захоплює якомога більше символів. Додайте ? одразу після нього (*?, +?, ??) — і він стане лінивим (lazy) та захопить мінімально можливий збіг.
Класи символів
| Патерн | Що означає |
| [abc] | Один із символів: a, b або c |
| [^abc] | Будь-який символ, КРІМ a, b, c (заперечення) |
| [a-z] | Будь-яка мала літера латиниці від a до z |
| [A-Z] | Будь-яка велика літера латиниці |
| [0-9] | Будь-яка цифра (те саме, що \d) |
| [a-zA-Z0-9_] | Літера, цифра або підкреслення (те саме, що \w) |
Групи та альтернатива
Група без захоплення
(?:...)
Альтернатива (АБО)
кіт|пес
✦ (...) зберігає збіг як окрему групу, доступну для подальшого використання (наприклад у заміні $1 або match[1]). (?:...) групує символи для квантифікатора чи альтернативи, але сам збіг не зберігає.
Якорі меж слова
| Патерн | Що означає |
| \b | Межа слова — позиція між словниковим (\w) і не-словниковим символом |
| \B | НЕ межа слова — позиція всередині слова або поза ним, де межі немає |
Прапорці (flags)
| Прапорець | Назва | Що змінює |
| g | global | Шукає всі збіги в рядку, а не лише перший |
| i | ignore case | Пошук без урахування регістру літер |
| m | multiline | ^ та $ відповідають межам кожного рядка тексту, а не лише всього рядка |
Практичні патерни
Email (простий)
^[\w.-]+@[\w.-]+\.\w+$
URL
^https?://[\w.-]+\.\w+(/\S*)?$
Дата YYYY-MM-DD
^\d{4}-\d{2}-\d{2}$
✦ ^[\w.-]+@[\w.-]+\.\w+$ відповідає адресам виду user.name@example.com. ^\+380\d{9}$ відповідає українському мобільному у форматі +380501234567 (код 380 і рівно 9 цифр номера). ^\d{4}-\d{2}-\d{2}$ перевіряє лише формат дати (4 цифри - 2 цифри - 2 цифри), а не її реальну коректність (наприклад, 2026-13-40 теж пройде перевірку формату).
✦ Щоб знайти спеціальний символ буквально (наприклад крапку чи дужку), його потрібно екранувати зворотною похилою рискою: \. , \* , \+ , \( , \) , \[ , \] , \{ , \} , \| , \^ , \$ , \\ . Без екранування ці символи мають спеціальне значення в патерні.
Як користуватися шпаргалкою
Ця шпаргалка зосереджує найважливіший синтаксис регулярних виразів — символи, квантифікатори, класи символів, групи та прапорці — у компактному форматі для швидкого пошуку під час написання патернів. Матеріал систематизований від базових елементів до готових практичних прикладів.
Ефективне використання
Використовуйте шпаргалку поряд із тестуванням патернів на реальних рядках — не покладайтеся лише на візуальний огляд регулярного виразу. Складайте складні патерни поступово: перевірте базову частину, потім додавайте квантифікатори, групи та прапорці, звіряючи результат на кожному кроці.
Часті запитання (FAQ)
Що таке регулярний вираз?
Регулярний вираз (regex, regexp) — це рядок-патерн, що описує певний набір або структуру символів у тексті. Він використовується для пошуку, перевірки та заміни фрагментів тексту за правилами, а не за точним збігом.
У чому різниця між жадібним (greedy) та лінивим (lazy) квантифікаторами?
Жадібний квантифікатор (наприклад *, +) намагається захопити якомога більше символів, що відповідають патерну, і лише потім відступає назад за потреби. Лінивий квантифікатор (*?, +?) захоплює якомога менше символів — мінімально можливий збіг.
Як працюють групи захоплення в регулярних виразах?
Група захоплення (...) виділяє частину збігу в окремий підрезультат, який можна отримати окремо (наприклад через match[1]) або використати в заміні. Група (?:...) працює аналогічно для групування та квантифікаторів, але не зберігає результат окремо.
Що означають прапорці g, i, m у регулярних виразах?
Прапорець g (global) шукає всі збіги в рядку, а не лише перший. Прапорець i (ignore case) робить пошук нечутливим до регістру літер. Прапорець m (multiline) змінює поведінку ^ та $ так, що вони відповідають межам кожного рядка, а не лише всього рядка.
Чому складні регулярні вирази важко читати та підтримувати?
Регулярні вирази компактні, але їхній синтаксис символьний і не завжди самопояснювальний: довгі патерни з вкладеними групами й квантифікаторами важко перевірити на помилки без тестування. Рекомендується розбивати складні патерни на менші частини, коментувати їх та покривати тестовими прикладами.