Генератор регулярных выражений

Визуализатор регулярных выражений: разбор в дерево, человеческое объяснение по токенам и проверка на тестовых строках. Библиотека готовых шаблонов.

Флаги пишутся подряд, без запятой и без пробелов. Поддерживаются g (все совпадения), i (без учёта регистра), m (^ и $ в каждой строке), s (. включает перевод строки), u (режим Unicode), y (поиск с позиции lastIndex), v (наборы Unicode вместо одиночных классов) и d (индексы начала совпадений). Порядок не важен: «giu» и «ug» — одно и то же.

Объяснение

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

Диаграмма выражения

Railroad — структура AST: терминалы, ветки и петли. NFA — переходы между состояниями автомата, ε-переходы отмечены пунктиром.

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

Подсветка токенов

Цвет показывает роль фрагмента: литерал, класс, квантор, группа и т.д.

Live-тест

Введите строку для проверки

Готовые регулярки

Каталог регулярок →

Найдено: 66 из 66

Что это и как пользоваться

Страница разбирает выражение на токены и показывает две схемы: железнодорожную диаграмму, по которой видно порядок и ветвления, и граф автомата — по нему понятно, какие пути возможны при сопоставлении.

Диаграмма строится по разобранному дереву, а не по исходной строке: если шаблон не разбирается, схемы не будет вовсе, и это самый быстрый способ увидеть, что скобка не закрыта.

Объяснение на русском идёт по частям шаблона: группа, класс, квантификатор, якорь — каждая подписана отдельно. Это работает и на чужой регулярке, которую нужно понять, а не переписать.

Поле флагов свободное, но проверяется: поддерживаются g, i, m, s, u, y, v и d, порядок не важен — giu и ug означают одно и то же. Неизвестная буква даёт ошибку с указанием, что именно не распознано.

Live-тест прогоняет шаблон по вашему тексту и подсвечивает совпадения и группы захвата, поэтому видно не только «нашлось», но и что попало в каждую группу. История выражений хранит последние шаблоны вместе с флагами.

Когда пригодится

  • Понять чужую регулярку из кода или конфига, не разбирая её по символам вручную.
  • Отладить шаблон на реальном тексте: увидеть, где совпадение обрывается раньше времени.
  • Проверить флаги: как m меняет поведение ^ и $, а s — точки.
  • Найти место, где шаблон может считаться очень долго: диаграмма показывает вложенные квантификаторы.
  • Сравнить две версии шаблона: вернуться к предыдущей из истории и посмотреть, где она давала другое совпадение.
  • Проверить, что шаблон с якорем ^ не съедает лишние строки, когда флаг m не выставлен.

Чего инструмент не делает

  • Движок — JavaScript: конструкции, специфичные для PCRE или .NET, вроде атомарных групп и рекурсии, не поддерживаются.
  • Шаблон не пишется за вас: страница объясняет и проверяет то, что вы дали.
  • Совпадения проверяются на одном тексте: успех здесь не доказывает, что шаблон верен для всех входов.
  • Вложенные контекстные структуры регуляркой не разбираются, даже если шаблон выглядит рабочим на примере.
  • Подсветка токенов показывает структуру, но не оценивает скорость шаблона: время выполнения здесь не измеряется.

Примеры

Вход
                    \d+
                  
Выход
                    находит одну или более цифр подряд
                  
Вход
                    \d+ и текст «заказ 42 от 7 мая»
                  
Выход
                    совпадения: 42, 7 (с подсветкой)
                  

Частые вопросы

Что такое регулярное выражение?

Это шаблон для поиска и разбора текста. Символы вроде . для любого символа, * для повторения и \d для цифры задают правила, а не буквальный текст. Регулярка говорит движку, что именно искать.

Чем отличаются жадный и ленивый квантификаторы?

Жадный .* захватывает максимум текста, а ленивый .*? — минимум. Например, на строке с двумя тегами жадный захватит всё до последнего закрывающего тега, а ленивый остановится на первом.

Зачем нужны группы захвата?

Круглые скобки (...) выделяют часть совпадения, к которой потом можно обратиться по номеру. Запись (?:...) — группа без захвата: она группирует, но не нумеруется и экономит память, когда обращаться к ней не нужно.

Что делают флаги g, i и m?

Флаг g включает глобальный поиск — все совпадения, а не только первое. Флаг i отключает учёт регистра. Флаг m переводит движок в многострочный режим, где ^ и $ привязаны к каждой строке, а не ко всему тексту.

Почему регулярки не подходят для HTML?

Вложенность тегов регулярными выражениями не разбирается корректно, потому что HTML не является регулярным языком. Для HTML используйте настоящий парсер, иначе легко получить неверный или дырявый разбор.

Что такое заглядывания вперёд и назад?

Lookahead (?=...) и lookbehind (?<=...) проверяют, что перед или после шаблона есть нужный текст, но не поглощают его. Это удобно для условий вроде «цифра, за которой не идёт точка».

Откуда берутся катастрофические откаты?

Вложенные квантификаторы вроде (a+)+ на несовпадающем тексте могут перебирать экспоненциальное число вариантов и завесить обработку. Такие паттерны лучше переписать на линейные.