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

Тестирование регулярных выражений с подсветкой совпадений

Напиши регулярное выражение, вставь тестовую строку и увидишь совпадения прямо в тексте — без единой строки кода. Захваченные группы отображаются в таблице ниже. Удобно при создании экстракторов для HTML: убедись, что шаблон захватывает именно то, что нужно.

//

Как использовать

  1. 1Напиши паттернВведи регулярное выражение в поле Pattern. Без слэшей — просто паттерн.
  2. 2Выбери флагиg — найти все совпадения, i — без учёта регистра, m — многострочный режим (^ и $ работают для каждой строки).
  3. 3Вставь тестовый текстСкопируй фрагмент HTML, текст страницы или API-ответ.
  4. 4Изучи совпаденияВ авторежиме совпадения подсвечиваются сразу при вводе паттерна. Если авторежим отключён — нажми Run. Группы захвата отображаются в отдельной таблице ниже.

Примеры

Извлечь все email-адреса
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Найди все email в тексте страницы — скопируй готовый паттерн в свой скрапер.
Цена в разных форматах
\$?\d{1,3}(?:[,.]\d{3})*(?:[.,]\d{2})?
Захвати цену в любом формате — $1,234.56 или 1234,56 — без написания нескольких условий.
URL из атрибута href
href="(https?://[^"]+)"
Извлеки только URL из атрибута href — группа захвата вернёт строку без кавычек и имени атрибута.
Дата в формате DD.MM.YYYY
\b(\d{2})\.(\d{2})\.(\d{4})\b
Разбей дату на день, месяц, год — три группы захвата готовы для дальнейшей обработки.
Число между тегами
<span class="count">(\d+)</span>
Вытащи число из конкретного тега — быстрее CSS-парсера для таких простых случаев.

Когда использовать

Регулярные выражения в парсинге используются на этапе постобработки: CSS-селекторы или XPath извлекают нужный элемент, а regex — конкретное значение из его текста. Например, элемент содержит «Цена: 1 299 ₽» — regex извлекает число. Также regex применяется когда HTML плохо структурирован: нет удобных классов или атрибутов, контент «зашит» в текст. В Python — модуль re, в JavaScript — нативные RegExp, в Scrapy — метод re() сразу после xpath() или css(). Тестируй паттерны здесь на реальных фрагментах страниц, прежде чем встраивать в код. Один неверный символ в группе захвата — и парсер молча вернёт пустые строки вместо данных.

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

Чем отличается Python re от JavaScript RegExp?
Синтаксис групп захвата и большинство операторов совпадают. Главное отличие в синтаксисе: Python поддерживает именованные группы (?P<name>...), в JS это (?<name>...). Базовые паттерны работают одинаково.
Паттерн не находит совпадений — с чего начать отладку?
Начни с простого: убери все условия и оставь только первые символы паттерна — убедись что базовый матч работает. Самые частые причины: флаг g не включён (без него только первое совпадение), точка не совпадает с переносом строки (нужен флаг s), пробелы в тексте отличаются от ожидаемых. Добавляй условия по одному.
Почему . не совпадает с переносом строки?
По умолчанию . совпадает с любым символом кроме \n. Включи флаг s (dotall) чтобы . захватывал всё включая переносы. В Python: re.DOTALL, в JS: флаг s.
Как тестировать паттерн на реальном HTML из ответа сервера?
Скопируй фрагмент HTML из Request Tester или DevTools (Network → Response) и вставь в поле текста. Включи флаг g чтобы найти все вхождения. Совпадения подсветятся сразу, группы захвата отобразятся в таблице ниже. Когда паттерн работает на реальных данных — переноси в код.
Как найти все совпадения, а не только первое?
Включи флаг g (global) — без него инструмент возвращает только первое совпадение. В Python re.findall() или re.finditer() находят все вхождения по умолчанию. В JavaScript нужен флаг /g в RegExp или метод String.matchAll().

Похожие инструменты