Конвертер форматов Regex (PCRE / JS / Python / Go)

Разработчик
Реклама · УДАЛИТЬ?

Тестовая панель

Справочник по синтаксису

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

Гид

Конвертер форматов регулярных выражений (PCRE / JS / Python / Go)

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

Преобразуйте регулярные выражения между форматами языков программирования: PCRE (PHP), JavaScript, Python, Go, Java и Ruby. Автоматически преобразует именованные группы, флаги, обратные ссылки и другие различия в синтаксисе. Выделяет несовместимые функции четкими предупреждениями. Включает тестовую панель для проверки ваших преобразованных регулярных выражений на примерах строк.

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

Введите ваше регулярное выражение, выберите исходный формат (язык, для которого оно написано) и целевой формат (язык, на который вы хотите его преобразовать). Преобразованное регулярное выражение появляется мгновенно с переведенными флагами. Проверьте примечания к преобразованию, чтобы узнать о внесенных изменениях и предупреждениях о неподдерживаемых функциях. Используйте тестовую панель для проверки преобразованного шаблона на примерах текста.

Возможности

  • 6 форматов регулярных выражений — PCRE (PHP), JavaScript (ES2018+), Python (модуль re), Go (regexp), Java (java.util.regex) и Ruby. Конвертируйте между любой парой.
  • Преобразование именованных групп — Автоматически преобразует синтаксис между (?P…) (PCRE/Python/Go) и (?…) (JS/Java/Ruby).
  • Перевод флагов — Преобразует флаги между форматами: /gi (JS) ↔ re.IGNORECASE (Python) ↔ (?i) inline (PCRE/Go) ↔ Pattern.CASE_INSENSITIVE (Java).
  • Преобразование обратных ссылок — Именованные обратные ссылки преобразуются: (?P=name) ↔ k между форматами.
  • Предупреждения о несовместимости — Цветовые оповещения: зеленый для чистых преобразований, желтый для изменений синтаксиса, красный для неподдерживаемых функций (например, Go не поддерживает просмотр назад, JS не поддерживает атомарные группы).
  • Тестовая панель — Тестируйте преобразованные регулярные выражения на примерах строк. Отображает совпадения, группы и количество совпадений, используя движок RegExp JavaScript.
  • Справочник по синтаксису — Сворачиваемая справочная таблица, показывающая ключевые различия между всеми форматами: именованные группы, просмотр вперед/назад, флаги, классы символов, атомарные группы, поддержка Unicode.
  • Автоматическое преобразование — Результаты обновляются мгновенно по мере ввода или изменения форматов.

Что преобразуется

Именованные группы: Различия в синтаксисе (?P) ↔ (?).
Именованные обратные ссылки: (?P=name) ↔ k ↔ g{name}.
Флаги: Встроенные (?imsx), суффикс /gi и специфичные для языка константы.
Просмотры назад: Поддерживается в PCRE/JS/Java, ограничено в Python/Ruby, не поддерживается в Go.
Атомарные группы: (?>…) — только PCRE/Java/Ruby; предупреждения для JS/Python/Go.
Притяжательные квантификаторы: a++ — только PCRE/Java/Ruby.
Классы символов: \R, \h, \v (специфично для PCRE) отмечаются для других форматов.
Комментарии: Синтаксис (?#…) — только PCRE/Python.
Условные выражения: (?(cond)yes|no) — только PCRE.

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

Почему форматы регулярных выражений различаются между языками?

Реализации регулярных выражений развивались независимо в разных языках программирования. Движок регулярных выражений Perl (PCRE) стал самым богатым по функциям, добавив именованные группы, просмотр назад, атомарные группы и другие продвинутые функции. Другие языки приняли подмножества: JavaScript изначально имел базовые регулярные выражения и постепенно добавлял функции (именованные группы в ES2018, просмотр назад в ES2018). Модуль re Python использует синтаксис (?P), унаследованный от раннего предложения. Go намеренно выбрал более простой движок регулярных выражений (RE2), который гарантирует сопоставление за линейное время, но жертвует такими функциями, как просмотр назад. Каждый язык делал разные компромиссы между мощностью и производительностью.

Какие функции регулярных выражений нельзя преобразовать?

Некоторые функции существуют только в одном или двух форматах и не имеют эквивалента в других. Просмотры назад отсутствуют в движке RE2 Go — нет обходного пути, только редизайн шаблона. Атомарные группы и притяжательные квантификаторы (PCRE/Java/Ruby) не имеют прямого эквивалента в JavaScript, Python или Go. Специфичные для PCRE классы символов, такие как \R (любой перенос строки), \h (горизонтальное пробельное) и \v (вертикальное пробельное), должны быть развернуты в эквиваленты классов символов. Условные шаблоны (?(cond)yes|no) существуют только в PCRE. Этот инструмент предупреждает вас об этих несовместимостях, чтобы вы знали, что требует ручного вмешательства.

Точна ли тестовая панель для всех форматов?

Тестовая панель использует собственный движок RegExp JavaScript, поэтому она точно тестирует поведение RegExp JavaScript. Для других целевых форматов тест дает разумное приближение, но может отличаться в крайних случаях — особенно в отношении обработки Unicode, поведения переноса строки и функций, которые JavaScript не поддерживает (например, атомарные группы). Для производственного использования всегда тестируйте преобразованные регулярные выражения на реальном целевом языке. Тестовая панель лучше всего подходит для быстрой проверки основного соответствия шаблонов.

В чем разница между регулярными выражениями PCRE и JavaScript?

PCRE (Perl Compatible Regular Expressions, используемые PHP) — это формат с наибольшим количеством функций: он поддерживает именованные группы с (?P), просмотр назад переменной длины, атомарные группы (?>…), притяжательные квантификаторы (a++), условные шаблоны, рекурсивные шаблоны и встраиваемое ограничение области действия флагов (?i:…). Регулярные выражения JavaScript проще: именованные группы используют (?), просмотр назад был добавлен в ES2018, и нет поддержки атомарных групп, притяжательных квантификаторов или условных выражений. PCRE использует синтаксис /pattern/flags, как и JavaScript, но поддерживает больше флагов (x для подробного режима, s для DOTALL). Преобразование PCRE → JS часто требует удаления расширенных функций.

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

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

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

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

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

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

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

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

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

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

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