Perl-стиль регулярні вирази (PCRE — Perl Compatible Regular Expressions) — це потужний синтаксис для роботи з текстом, що дозволяє виконувати складні пошуки та маніпуляції. Вони є стандартом для багатьох сучасних мов програмування та інструментів завдяки своїй гнучкості та багатому набору можливостей.
Основи PCRE
Регулярний вираз складається з шаблону, що описує набір текстових рядків. Наприклад:
a
— відповідає символу a..
— відповідає будь-якому символу, окрім нового рядка.[abc]
— відповідає a, b, або c.[a-z]
— відповідає будь-якій маленькій букві.[^a-z]
— відповідає всьому, крім маленьких букв.\d
— відповідає будь-якій цифрі (еквівалентно[0-9]
).\w
— відповідає будь-якій букві, цифрі чи символу підкреслення ([a-zA-Z0-9_]
).\s
— відповідає пробільному символу (пробіл, табуляція тощо).
Модифікатори
Модифікатори змінюють поведінку виразу:
/i
— ігнорування регістру (case-insensitive)./g
— глобальний пошук (знаходить усі відповідності)./m
— багато-рядковий режим (впливає на^
і$
)./s
— дозволяє.
відповідати символам нового рядка.
Квантифікатори
Квантифікатори вказують на кількість повторень:
*
— 0 або більше разів.+
— 1 або більше разів.?
— 0 або 1 раз.{n}
— рівно n разів.{n,}
— n або більше разів.{n,m}
— від n до m разів.
Групування та посилання
(abc)
— групує вираз abc. Групи також створюють захоплення для подальшого використання:\1
— посилання на першу захоплену групу.
(?:abc)
— групує без захоплення.(?=abc)
— позитивний погляд уперед (відповідає, якщо після йде abc).(?!abc)
— негативний погляд уперед (відповідає, якщо після немає abc).
Якорі
^
— початок рядка.$
— кінець рядка.\b
— границя слова.\B
— не границя слова.
Приклади
-
Перевірити, чи рядок починається з цифри:
^\d
-
Знайти всі слова “cat” у тексті, незалежно від регістру:
cat
з модифікатором
/i
. -
Замінити всі повторювані пробіли на один пробіл:
\s+
-
Перевірити email:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
PCRE підтримується багатьма мовами програмування (наприклад, Ruby, PHP, Python, JavaScript із модифікаціями), а також системними утилітами (grep
, sed
тощо).