Perl-стиль регулярні вирази (PCRE — Perl Compatible Regular Expressions)

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 — не границя слова.

Приклади

  1. Перевірити, чи рядок починається з цифри:

    ^\d
    
  2. Знайти всі слова “cat” у тексті, незалежно від регістру:

    cat
    

    з модифікатором /i.

  3. Замінити всі повторювані пробіли на один пробіл:

    \s+
    
  4. Перевірити email:

    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
    

PCRE підтримується багатьма мовами програмування (наприклад, Ruby, PHP, Python, JavaScript із модифікаціями), а також системними утилітами (grep, sed тощо).