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

Опубликовано

Регулярные выражения мощны, но чрезвычайно трудны для отладки. Три бесплатных инструмента делают их доступными: живой тестер с подсветкой совпадений, справочник для поиска синтаксиса и конвертер для перехода между разными вариантами регулярных выражений.

Тестер регулярных выражений, справочник и конвертер — перестаньте угадывать, начните соответствовать 1
Реклама · УДАЛИТЬ?

В разработке программного обеспечения существует шутка: каждый раз, когда вы пишете регулярное выражение, вы создаете две проблемы. Паттерн работает — иногда — но расшифровка его через шесть месяцев требует доктора и молитвы. Регулярные выражения заслужили свою мистическую репутацию, но они также незаменимы. Проверка электронной почты, парсинг логов, извлечение URL — вы не заменяете их циклом for. Вы учитесь лучше использовать их.

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

Почему регулярные выражения всё ещё важны (и почему они причиняют боль)

Сопоставление паттернов — ключевая навык для разработчиков серверного кода, инженеров по тестированию и инженеров данных. Одно хорошо спроектированное регулярное выражение может заменить десятки строк кода для обработки строк. Проблема не в самой концепции — она в синтаксисе. Квантификаторы, смотрящие вперёд, группы захвата и классы символов каждый имеют свои особенности. Добавьте различия между языками (регулярные выражения на JavaScript и Python — родственники, а не двойные братья) и отладка становится игрой в догадки.

Рабочий процесс, который обычно следуют разработчики: пишут паттерн, вставляют его в скрипт, запускают скрипт, моргают, повторяют. Существует более быстрый способ.

Инструмент 1 — Тестер регулярных выражений: просмотр совпадений в реальном времени

The онлайн тестер регулярных выражений выделяет совпадения в реальном времени. Не нужно запускать скрипт, не нужно открывать консоль браузера — просто введите паттерн и посмотрите, как совпадения светятся при обработке ввода.

Вот пошаговое руководство с проверкой электронной почты:

  • Паттерн: [a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}
  • Строка теста: Contact us at hello@example.com or support@iotools.cloud for help.

Вставьте паттерн в Тестер регулярных выражений, добавьте строку теста и оба адреса электронной почты сразу выделяются. Измените {2,} к {2,4} и посмотрите, как более длинные доменные имена, такие как .studio исчезают из совпадений в реальном времени — без перезагрузки, без догадок.

Группы захвата также доступны в реальном времени. Добавьте скобки вокруг локальной части —([a-zA-Z0-9._%+\-]+)@— и группа 1 появляется в панели совпадений, показывая только часть имени пользователя. Это делает создание логики извлечения намного проще, потому что вы видите, что именно захватывает каждая группа, прежде чем вносить изменения в код.

Тестер также показывает флаги (без учёта регистра i, глобальный g, мультистрочный m) как переключатели, так что вы можете проверить влияние каждого флага без переписывания паттерна.

Инструмент 2 — Таблица сокращений регулярных выражений: поиск синтаксиса без переключения вкладок

Даже опытные разработчики забывают, является ли  границей слова или символом отбоя. Таблица сокращений регулярных выражений организована по категориям, так что вы можете вернуться к работе за несколько секунд: Анкерные символы: (начало),

  • (конец), ^ (граница слова), $ (не граница слова)  Квантификаторы: \B (0 или 1),
  • (диапазон), * (0+), + (1+), ? после квантификатора для ленивого соответствия {n,m} и их отрицания ? Группы:
  • Классы символов: [abc], [^abc], \d, \w, \s захватывающие,
  • не захватывающие, (...) именованные группы (?:...) Смотрящие вперёд / смотрящие назад: (?P<name>...) Каждая запись содержит символ, простое описание на английском языке и пример. Это справочник, который вы бы закрепили на первом дне, если бы знал, что вам понадобится — теперь вы знаете.
  • Инструмент 3 — Конвертер регулярных выражений: переход между языками без проблем (?=...), (?!...), (?<=...), (?<!...)

Вот ловушка, в которую каждый разработчик в конечном итоге попадает: вы пишете регулярное выражение на Python, оно работает идеально, а затем вы вставляете его в JavaScript и оно молча не работает. Или хуже — оно соответствует чему-то другому.

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

переводит паттерны между PCRE, JavaScript, Python и другими вариантами. Именованные группы захвата — яркий пример, где синтаксис отличается:

The Python (в стиле PCRE): Оба соответствуют дате вида

  • , но ссылка на группу захвата различается: Python использует (?P<year>\d{4})-(?P<month>\d{2})
  • JavaScript: (?<year>\d{4})-(?<month>\d{2})

, JavaScript использует 2024-03. Конвертер обрабатывает перевод синтаксиса, так что вы не ищете в документации, чтобы понять, почему ваш паттерн сломался при переходе между стеками. match.group('year')Другие различия, которые устраняет конвертер: собственные квантификаторы (только в PCRE), атомные группы, управляющие экранирования Unicode и поведение match.groups.yearв режиме Unicode.

Три практические примера регулярных выражений, которые стоит попробовать прямо сейчас \d Скопируйте эти в

и проведите эксперименты:

Проверка электронной почты Регулятор тестирования Совпадает с стандартными адресами электронной почты. Не соответствует полному RFC 5322 (этот регулярный паттерн занимает тысячи символов), но охватывает случай 99% для проверки ввода.

Извлечение URL

[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}

Извлекает HTTP и HTTPS URL из чистого текста. Полезно при извлечении ссылок из неструктурированного контента или из лог-файлов.

Анализ Apache Access Log

https?://[^\s/$.?#].[^\s]*

Извлекает IP-адрес, время, метод HTTP, путь, код статуса и размер ответа из стандартной строки Apache access log. Проверьте его на:

Тестер регулярных выражений, таблица сокращений и конвертер — прекращайте догадываться, начинайте соответствовать 2

^(\S+) \S+ \S+ \[([^\]]+)\] "(\S+) (\S+) \S+" (\d{3}) (\d+)

Тестер регулярных выражений, таблица сокращений и конвертер — прекращайте догадываться, начинайте соответствовать 1 192.168.1.1 - - [01/May/2024:12:00:00 +0000] "GET /index.html HTTP/1.1" 200 1234

Хотите убрать рекламу? Откажитесь от рекламы сегодня

Установите наши расширения

Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска

в Расширение Chrome в Расширение края в Расширение Firefox в Расширение Opera

Табло результатов прибыло!

Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!

Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?

новости с техническими моментами

Примите участие

Помогите нам продолжать предоставлять ценные бесплатные инструменты

Купи мне кофе
Реклама · УДАЛИТЬ?