Skip to content

Продвинутые регулярные выражения

🚀 Продвинутые операторы регулярных выражений

Эти конструкции дают больше контроля над поиском и заменой текста.


🧱 1. {n}, {n,}, {n,m} — точное количество повторений

  • {n} — ровно n повторений
  • {n,} — минимум n повторений
  • {n,m} — от n до m повторений

Примеры:

  • a{3}aaa
  • a{2,4}aa, aaa, aaaa

🧠 2. (?...) — специальные конструкции

2.1 (?:...) — негруппирующая скобка

  • Не сохраняет группу для дальнейшего обращения

Пример:

  • (?:abc)+ — совпадает с abcabc, но не сохраняет abc как отдельную группу

2.2 (?=...) — позитивная опережающая проверка (lookahead)

  • Условие, что далее по тексту есть шаблон

Пример:

  • \d(?=px) — цифра перед px, например: 5px → совпадает 5

2.3 (?!...) — негативная опережающая проверка

  • Условие, что далее по тексту нет шаблона

Пример:

  • foo(?!bar) — найдёт foo, не за которым идёт bar

🧩 3. (?<=...) и (?<!...) — lookbehind (опережающее назад)

  • (?<=...)есть шаблон до
  • (?<!...)нет шаблона до

Пример:

  • (?<=@)\w+ — найдёт слово после символа @ (например, gmail в user@gmail.com)

🌀 4. \b и \B — границы слова

  • \b — граница слова
  • \B — НЕ граница слова

Примеры:

  • \bword\b — точное слово word
  • \Bwordpassword, sword

🔂 5. Рекурсивные шаблоны (в некоторых движках)

Некоторые реализации (например, PCRE) поддерживают вложенные структуры:

\((?>[^()]+|(?R))*\)

Этот шаблон находит корректно вложенные скобки. Используется редко.


💡 6. Обратные ссылки (Backreferences)

Позволяют ссылаться на уже найденные группы.

Пример:

  • Шаблон: (\w+) \1
  • Совпадёт с: test test, hello hello

🔄 7. Условные выражения

Поддерживаются не везде, но позволяют задать условия:

(?(1)yes|no)

Если группа 1 существует, будет yes, иначе no.


📘 Полезные ресурсы