Учебный конструктор · регулярные выражения
Регулярные выражения вживую
Regex выглядит как набор иероглифов \d{2}\.\d{2}\.\d{4}, а на деле это просто язык «найди текст по правилу». Вводи паттерн — совпадения подсветятся сразу, а ниже мы разберём по кусочкам, что делает каждый знак. Жми примеры (email, телефон, дата) и меняй — лучший способ понять.
Незнакомы слова (квантификатор, якорь, жадность…)? → словарь простыми словами внизу. Где пригодится: валидация форм, поиск/замена, парсинг логов — например в API и мониторинге.
[\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+(?= ₽) — число, ЗА которым идёт «₽», но сам «₽» в совпадение не входит. Продвинутая, но мощная штука.
Дальше по теме
Эти инструменты связаны с текущим — так задачи стыкуются на практике.
Все инструменты — в каталоге.