Regex и сопоставление шаблонов

тестер регулярных выражений Pythonпроверьте настоящий результат re

Введите шаблон и текст, затем вручную запустите поиск, полное совпадение или замену через Python re.

тестер регулярных выражений Python

Шаблон

Тестовый текст

Результат

Введите данные или запустите тест.

Шаблон и текст обрабатываются в этом браузере. Файлы Python загружаются при первом запуске.

Параметры

i, m, s, x, a по одному разу; флага JavaScript g нет.
  • i — Без учёта регистра
  • m — ^ и $ на границах строк
  • s — Точка захватывает перевод строки
  • x — Пробелы и комментарии в шаблоне
  • a — Классы символов ASCII

Среда Python: загрузится при первом запуске

Пределы: шаблон 2000, текст 100000, замена 10000 единиц UTF-16; 10000 совпадений, миллион единиц вывода, четыре миллиона в отчёте. Остановка через две секунды.

Введите данные или запустите тест.

Шаблон может работать в JavaScript-тестере и не проходить в Python. Этот тестер регулярных выражений Python запускает CPython re, поэтому именованные группы и ссылки в замене ведут себя как в вашей программе.

Если нужна проверка regex онлайн, сравните finditer, search и fullmatch. Группы захвата получают позиции в кодовых точках Unicode; замена регулярным выражением в Python использует \g<name>, а не $1.

Зачем нужен тестер регулярных выражений Python

Отделить совпадение от захваченных групп

Тестер регулярных выражений Python показывает целое совпадение и пронумерованные либо именованные группы отдельно. Не участвовавшая группа имеет null и (-1, -1), а захваченная пустая строка остаётся пустой строкой.

Синее целое совпадение содержит два цветных захвата, каждый связан со своей карточкой результата.

Увидеть замену, сохранив исходный текст

Ссылки \g<last> и \g<first> меняют порядок полей в отдельном результате re.subn. Нулевой лимит означает замену всех совпадений; исходный текст остаётся доступен.

Два цветных фрагмента меняются местами в правом предварительном результате, левый исходник сохранён.

Проверка тонкостей Python re

01

Выбрать тип поиска

finditer перечисляет все непересекающиеся совпадения, search находит первое, fullmatch требует совпадения всего текста. Флага g из JavaScript здесь нет.

02

Задать флаги и запустить

i, m, s, x и a принадлежат Python re. m меняет поведение ^ и $ на границах строк, s разрешает точке захватывать перевод строки. Среда Python загружается при первом ручном запуске.

03

Проверить позиции перед экспортом

Индексы начинаются с нуля, не включают конец и считают кодовые точки Unicode. В A😀B буква B начинается с позиции Python 2. Ctrl/Cmd + Enter запускает тест повторно.

Что содержит полный результат

Настоящий CPython re

Тестер регулярных выражений Python загружает Pyodide в Worker и показывает действительную версию Python. JavaScript RegExp не выдаётся за Python.

Значения и диапазоны групп

Для каждого совпадения доступны группа 0, номера, имена, значения и интервалы. Позиции Python преобразуются для правильной подсветки текста с эмодзи в браузере.

Замена по правилам Python

re.subn раскрывает \1 и \g<name>. Пустой шаблон удаляет совпадения, а $1 остаётся обычным текстом. Исходная строка не перезаписывается.

Экспорт без обрезания

Копирование и скачивание JSON доступны лишь после успешного завершения. Отчёт содержит шаблон, флаги, режим, версию и все совпадения; заменённый текст тоже можно сохранить.

Границы запуска и формата

Только один движок
Тестер регулярных выражений Python исполняет CPython re над текстом Unicode. Он не переключается на PCRE2, JavaScript или сторонний пакет regex.
Только ручной запуск
Сложный шаблон запускается по кнопке или сочетанию клавиш. После загрузки Python двухсекундный лимит завершает Worker; частичные данные не превращаются в сообщение «нет совпадений».
Флаги Python без подмены
i, m, s, x и a допускаются по одному разу. g, u и y относятся к другим правилам; поиск всех совпадений задаёт finditer.
Ограниченный размер
Шаблон до 2000, текст до 100000, замена до 10000 единиц UTF-16. Свыше 10000 совпадений или превышение размера вывода и отчёта останавливают весь запуск.
Без выполнения пользовательского кода
Выполняются только фиксированные операции re. Нет запуска Python-скриптов, импорта файла, запроса URL и общих ссылок с тестовым текстом.
Замена остаётся предпросмотром
re.subn создаёт отдельную строку. Пример и очистка меняют ввод лишь после подтверждения и допускают одно действие отмены.

Вопросы про тестер регулярных выражений Python

Почему шаблон работает в regex101, но не в Python?

Проверьте выбранный движок regex101: там может стоять PCRE2. Здесь работает CPython re; именованная группа в нём записывается как (?P<name>...).

Можно ли проверить замену Python re.sub?

Да. Выберите замену и введите \g<name> или \1. $1 не раскрывается как группа Python; исходный текст не меняется.

Можно ли онлайн увидеть совпадения и группы Python?

Да. Совпадения подсвечены, значения и позиции групп приведены отдельно. Совпадение нулевой длины отмечено видимым маркером.

Почему .*? иногда безопаснее, чем .*?

Ленивый вариант сначала пробует короткий фрагмент, жадный — длинный. Ни один не гарантирует быструю работу: проверяйте пограничные данные.

Чем (...) отличается от (?:...)?

Оба варианта группируют части шаблона, но только (...) создаёт нумерованную группу захвата для результата или ссылки при замене.

Остались вопросы?

Проверьте сложный случай в тестере регулярных выражений Python

Сравните ожидаемое совпадение с отрицательным примером и проверьте группы перед сохранением отчёта.