Перейти к основному контенту
NGPP
Кабинет

Учебный конструктор · регулярные выражения

Регулярные выражения вживую

Regex выглядит как набор иероглифов \d{2}\.\d{2}\.\d{4}, а на деле это просто язык «найди текст по правилу». Вводи паттерн — совпадения подсветятся сразу, а ниже мы разберём по кусочкам, что делает каждый знак. Жми примеры (email, телефон, дата) и меняй — лучший способ понять.

Незнакомы слова (квантификатор, якорь, жадность…)? → словарь простыми словами внизу. Где пригодится: валидация форм, поиск/замена, парсинг логов — например в API и мониторинге.

Примеры:
//gi
Текст для поиска
Результатсовпадений: 2
Пиши на ivan@example.org или support@example.com, а не на «почта собака».
Разбор паттерна — что делает каждый кусок
[\w.-]один из символов: \w.-
+1 и более раз
@символ «@» буквально
[\w-]один из символов: \w-
+1 и более раз
\.символ «.» буквально
[a-z]один из символов: a-z
{2,}2 и более раз

📖 Словарь: простыми словами

Встретил незнакомое слово выше — найди его здесь. Коротко — суть; разверни — подробное объяснение с аналогией.

Регулярное выражениешаблон для поиска текста по правилу

Regex — компактный язык описания шаблонов: «найти всё, что похоже на email/телефон/дату». Один паттерн заменяет десятки условий в коде.

Паттернсам шаблон из символов и спецзнаков

Строка-правило, например \d{2}\.\d{2}\.\d{4} для даты. Обычные символы ищутся буквально, спецсимволы (\d, +, []) задают правила.

Совпадение (match)кусок текста, подошедший под паттерн

Найденный фрагмент. Совпадений может быть много (с флагом g) — например все email в письме.

Флагирежимы: g — все, i — без регистра, m — многострочно

g (global) — искать все совпадения, а не первое; i (insensitive) — игнорировать регистр; m (multiline) — ^ и $ работают на каждой строке.

Символьный класс [ ]один символ из набора

[abc] — один из a, b, c. [a-z] — диапазон. [^abc] — любой, КРОМЕ перечисленных. [0-9] то же, что \d.

Квантификаторсколько раз повторить: * + ? {n,m}

* — 0 и более, + — 1 и более, ? — 0 или 1, {2,5} — от 2 до 5 раз. Относится к предыдущему символу/группе.

Жадность и леньзахватить максимум или минимум

По умолчанию квантификаторы жадные (берут как можно больше). Добавь ? (например +?) — станут ленивыми (минимум). Частый источник багов в regex.

Якорьпривязка к месту: ^ начало, $ конец, \b граница

^ — начало строки, $ — конец, \b — граница слова (между буквой и не-буквой). Сами ничего не «съедают», только указывают позицию.

Группа ( )сгруппировать и/или захватить часть

(…) группирует выражение и захватывает совпавший кусок (можно достать отдельно). (?:…) — только группирует, без захвата. (?<имя>…) — именованная.

Альтернация |одно ИЛИ другое

cat|dog — «cat» или «dog». Часто оборачивают в группу: (cat|dog)s — «cats» или «dogs».

Экранирование \сделать спецсимвол обычным

Чтобы искать точку буквально, пишут \. (иначе . значит «любой символ»). Так же \\, \+, \( и т.д.

Lookahead (?=…)проверка «впереди идёт …» без захвата

Опережающая проверка: \d+(?= ₽) — число, ЗА которым идёт «₽», но сам «₽» в совпадение не входит. Продвинутая, но мощная штука.

Дальше по теме

Эти инструменты связаны с текущим — так задачи стыкуются на практике.

Все инструменты — в каталоге.