У цій статті
Що таке регулярний вираз?
Регулярний вираз (regex або regexp) — це послідовність символів, яка визначає шаблон пошуку. Їх використовують для пошуку, співставлення, вилучення, заміни та перевірки тексту. Шаблони regex підтримуються нативно практично в кожній мові програмування і є незамінним інструментом у арсеналі будь-якого розробника.
Regex може варіюватися від простих шаблонів на кшталт \d+ (одна або більше цифр) до складних багаторядкових конструкцій з випереджальними перевірками, зворотними посиланнями та іменованими групами. Незважаючи на потужність, складні regex важко читати й підтримувати — тестер regex допомагає будувати та перевіряти шаблони в інтерактивному режимі.
Як працює наш тестер regex
Тестер regex забезпечує відповідність у реальному часі з візуальним підсвічуванням під час введення.
- Відповідність у реальному часі — підсвічує всі збіги в тестовому рядку під час введення шаблону
- Підтримка прапорців — перемикайте прапорці global, case-insensitive, multiline та dotAll
- Відображення захоплених груп — показує захоплені групи та іменовані захоплення для складних шаблонів
Спробуйте безкоштовно — реєстрація не потрібна
Протестувати регулярний вираз →Коли використовувати тестер regex
Тестер regex корисний завжди, коли потрібно розробити або налагодити шаблон перед вбудовуванням його у код.
- Валідація форм — розробляйте та тестуйте шаблони для перевірки email, телефону, поштового індексу або довільних полів введення
- Аналіз логів — створюйте regex для вилучення полів з рядків логів перед обробкою за допомогою grep або awk
- Вилучення даних — тестуйте шаблони для скрейпінгу або розбору структурованих даних з тексту або HTML
Часті запитання
У чому різниця між жадібними та лінивими квантифікаторами?
Жадібні квантифікатори (*, +, ?) захоплюють якомога більше. Ліниві квантифікатори (*?, +?, ??) захоплюють якомога менше. Наприклад, для рядка <a>text</a> шаблон <.*> збігається з усім рядком (жадібно), тоді як <.*?> збігається лише з <a> (ліниво). Ліниві квантифікатори є незамінними при розборі HTML або вкладених структур.
Як збігатися з буквальною крапкою або іншим спеціальним символом у regex?
Екрануйте символ зворотною скісною рискою: \. збігається з буквальною крапкою, \* — з буквальною зірочкою. Спеціальними символами, що потребують екранування, є: . * + ? ^ $ { } [ ] | ( ) \. Якщо потрібно знайти будь-який із них буквально, завжди додавайте перед ним \.
Чому мій regex працює по-різному в JavaScript та Python?
Різні мови реалізують дещо відмінні різновиди regex. Основні відмінності: Python використовує (?P<name>) для іменованих груп, тоді як JavaScript — (?<name>); підтримка ретроспективних перевірок відрізняється; деякі можливості, як-от \K (keep), існують у PCRE, але не в JavaScript. Завжди тестуйте regex у контексті цільової мови програмування.