Проверка регулярных выражений
Опробуйте регулярное выражение на образце текста и посмотрите все совпадения, их группы захвата и результат замены.
Работает полностью в браузере
| № | Позиция | Совпадение | Группы |
|---|
Синтаксис регулярных выражений JavaScript (ECMAScript) в том виде, в каком его поддерживает ваш браузер. Текст до 5 МБ; перечисляются и подсвечиваются первые 1 000 совпадений. Выражение, которое выполняется дольше 2 секунд, останавливается.
Как проверить регулярное выражение
- Введите шаблон между косыми чертами и отметьте нужные флаги, например
gдля всех совпадений илиi, чтобы не учитывать регистр. - Вставьте тестовый текст. Совпадения подсвечиваются при вводе, а в таблице перечислены все совпадения с их позицией и группами захвата.
- Чтобы проверить подстановку, введите замену, например
$2-$1или$<year>, и прочитайте результат под ней.
Безопасная проверка шаблонов
Инструмент строит из вашего шаблона и флагов объект RegExp JavaScript и выполняет его в фоновом потоке, тем же движком, который будет использовать ваш код в этом браузере. Совпадения возвращаются с начальной позицией и всеми группами захвата, а страница рисует их поверх вашего текста с чередующейся подсветкой, чтобы соседние совпадения можно было различить. Пустое совпадение, которое могут дать, например, \b или a*, показывается тонкой чертой.
Выполнение шаблона в отдельном потоке важно, потому что регулярное выражение может работать экспоненциально долго. Если шаблон всё ещё выполняется через 2 секунды, поток останавливается, и вы получаете сообщение вместо зависшей вкладки. Та же защита работает и в инструменте Поиск и замена.
Позиции считаются в кодовых единицах UTF-16, как считаются строки в JavaScript: эмодзи или другой символ за пределами основной плоскости занимает две. В списке показаны первые 1 000 совпадений; общее число над ним учитывает все совпадения.
Советы
- Когда шаблон заработал, примените его ко всему документу в инструменте Поиск и замена.
- Сравните текст до и после замены в инструменте Сравнить тексты.
- Ищете даты в журнале? Превратите метки времени в понятное время в инструменте Конвертер Unix-времени.
Вопросы и ответы
Какой диалект регулярных выражений здесь используется?
JavaScript, который выполняет движок вашего собственного браузера, поэтому результаты в точности такие, какие даёт RegExp в вашем браузере или в Node.js. Большая часть повседневного синтаксиса общая с PCRE, Python и Java, но некоторые возможности различаются: притяжательные квантификаторы и атомарные группы не поддерживаются, а ретроспективные проверки, именованные группы и флаг v требуют современного браузера.
Почему показано только одно совпадение?
Без флага g (глобальный) регулярное выражение JavaScript находит только первое совпадение, а замена меняет только первое вхождение. Отметьте g, чтобы найти все. Инструмент в точности следует языку, поэтому то, что вы видите, — это то, что сделает ваш код.
Что делают флаги?
g находит все совпадения, i не учитывает регистр, m заставляет ^ и $ срабатывать на границах строк, s позволяет . совпадать с переводами строк, u включает полную обработку Unicode, v — более новый режим Unicode с операциями над множествами, y (sticky) совпадает только в текущей позиции, а d записывает начало каждой группы, что инструмент и так использует для позиций групп.
Как использовать группы в замене?
$1, $2 и так далее вставляют нумерованные группы, $<name> вставляет именованную группу, $& вставляет всё совпадение целиком, $` и $' вставляют текст до него и после него, а $$ записывает знак доллара как есть.
Почему шаблон остановился с сообщением «выполнялся слишком долго»?
Некоторые шаблоны, например ^(a+)+$ на длинной цепочке букв a, которая заканчивается не так, как ожидается, заставляют движок перебирать огромное число способов совпадения. Это называется катастрофическим возвратом. Инструмент выполняет каждый шаблон в фоновом потоке и останавливает его через 2 секунды, чтобы страница оставалась пригодной для работы. Перепишите вложенные повторы вида (a+)+ как a+.
Отправляется ли мой текст куда-либо?
Нет. Шаблон и текст остаются в вашем браузере; сопоставление выполняется на вашем устройстве, ничего не загружается и не сохраняется.