Тестер регулярных выражений
Проверьте регулярное выражение на своём тексте и посмотрите все совпадения с их позициями и группами захвата. Переключитесь в режим замены, чтобы переписать
Введите шаблон, вставьте свой текст и увидьте все совпадения с подсветкой, их позициями и группами захвата. Переключитесь в режим замены, чтобы переписать текст подстановкой, или в режим извлечения, чтобы вывести одну группу захвата построчно, — это самый быстрый способ проверить шаблон до того, как он попадёт в код.
Движок — это диалект регулярных выражений JavaScript, который используют браузеры, поэтому результат совпадает с тем, что вы получите в Node или в консоли браузера, включая именованные группы, опережающую проверку и ленивые квантификаторы. Доступны флаги глобального поиска, игнорирования регистра, многострочного режима, точки как любого символа и Unicode, а вышедший из-под контроля шаблон останавливается, вместо того чтобы подвесить вкладку.
Как проверить регулярное выражение
Введите шаблон и задайте флаги
Вставьте текст для проверки
Посмотрите совпадения или используйте режимы замены и извлечения
Частые вопросы
Какой диалект регулярных выражений используется?
JavaScript (ECMAScript) — тот же движок, что в браузере и Node.js. Шаблоны, написанные для PCRE, Python или Java, могут потребовать небольших правок: притяжательные квантификаторы и рекурсия в этом диалекте отсутствуют.
Почему мой шаблон завис или остановился?
Катастрофический откат, обычно из-за вложенных квантификаторов вроде (a+)+ на длинной строке без совпадений. Инструмент останавливается после заданного числа итераций, чтобы защитить вкладку; упростите шаблон или привяжите его.
Как заменить текст?
Переключитесь в режим замены и введите строку подстановки. $1, $2 или $<name> вставляют группы захвата, так что можно переформатировать даты, менять местами поля или чистить журналы.
Что делает режим извлечения?
Он выводит по одной группе захвата на строку вместо всего совпадения — именно это нужно, когда вы вытаскиваете адреса email, URL или идентификаторы из большого текста.
Работают ли переводы строк в моём шаблоне?
Только с флагами многострочного режима или точки как любого символа. По умолчанию . не совпадает с переводом строки — частая причина того, что шаблон работает на одной строке, но не работает на абзаце.
Мой текст куда-то загружается?
Нет, сопоставление выполняется локально — это полезно, когда текст содержит реальные данные журналов или информацию о клиентах.
Кратко
| Ввод | текст |
|---|---|
| Несколько файлов | Нет |
| Где работает | В вашем браузере — файлы никуда не загружаются |
| Работает офлайн | Да — после загрузки страницы |
| Цена | Бесплатно, без регистрации, без водяных знаков |
Где конвертации незаметно ломаются
Большинство ошибок конвертации — не про синтаксис, а про смысл. Столбец CSV с почтовыми индексами теряет ведущие нули в тот момент, когда таблица решает, что это число; длинный идентификатор выходит за пределы точности чисел с плавающей запятой; даты меняют смысл в зависимости от того, что идёт первым — день или месяц. Ключи JSON не упорядочены, а массивы упорядочены, и инструмент, сортирующий ключи, ничего не меняет, тогда как сортирующий массивы меняет данные. Unicode — ещё одна ловушка: текст может прийти в UTF-8, в UTF-16 или с BOM, и декодер, который угадает неверно, превращает буквы с диакритикой в «кракозябры». Прежде чем доверять любой конвертации, выборочно проверьте первую и последнюю строку, любое поле с ведущими нулями и любое поле, содержащее кавычки, запятые или переводы строк.
Как выбрать формат данных
JSON — выбор по умолчанию для всего, что возвращает API или читает программа: он естественно работает с вложенными структурами, числами, логическими значениями и null, и его разбирает любой язык. CSV компактнее и открывается прямо в таблице, но в нём нельзя выразить вложенность и нет общего стандарта для разделителя, кавычек и кодировки — именно здесь конвертации и ломаются. XML многословен, но несёт атрибуты, смешанное содержимое и схемы, поэтому до сих пор доминирует в форматах документов и устаревших интеграциях. YAML самый читаемый для конфигурации, но чувствителен к пробелам и удивляет приведением типов («no» превращается в false, версия вроде 1.10 — в 1.1). Выбирайте формат, который предпочитает потребляющий инструмент, а не тот, что выглядит красивее.