Регулярные выражения: ИИ-нейросеть для regex с проверкой онлайн

Регулярные выражения — ИИ-помощник нейросети Аливия, который пишет regex по описанию и сразу проверяет его на ваших строках. Опишите, что нужно найти, выберите язык или движок (JavaScript, Python, PHP или Яндекс Метрика) и дайте 3–5 примеров: что должно совпасть и что нет. Нейросеть вернёт выражение с разбором, а браузер подсветит совпадения.

Работает онлайнРусский и другие языкиТест бесплатно, без регистрацииБез VPNДоступ 24/7Голосовой ввод и файлы

АливияИИ-ассистент20 000 символов бесплатно20 000 символов доступны сразу — без карты и без регистрации.
Зарегистрируйтесь и подтвердите почту — начислим ещё 30 000 символов на 30 дней.Зарегистрироваться
Онлайн
Примеры запросов — нажмите, и текст подставится в чат:

Программистам · ИИ-инструмент нейросети Аливия

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

Опишите, что найти, и дайте примеры — бот напишет выражение и разберёт его по частям.

Что сделать
Совпадение
Ещё настройкирегистр, именованные группы, пример кода
Регистр
Именованные группы
Пример кода
Ваш запрос

Запрос подставится в поле чата — его можно поправить перед отправкой.

Что такое регулярное выражение и как здесь работает проверка

Регулярное выражение — это шаблон, по которому программа ищет, проверяет или заменяет текст: номера телефонов, даты, адреса страниц, коды заказов. На этой странице вы описываете словами, что нужно найти, и даёте 3–5 строк-примеров: какие должны совпасть, а какие нет. Нейросеть Аливия пишет выражение под выбранный язык и разбирает его по частям.

Главное отличие — проверка прямо на странице. Помощник в браузере сразу прогоняет выражение по вашим примерам и подсвечивает совпадения. Если хотя бы один пример не прошёл, ошибка одной кнопкой уходит обратно модели вместе со строкой, на которой выражение сломалось. Так вы получаете не просто «похоже на правду», а шаблон, проверенный на ваших данных.

Как получить проверенную регулярку за пять шагов

  1. Опишите задачу одной фразой: «найти российские номера мобильных в любом формате» или «вытащить ID товара из URL».
  2. Выберите язык или движок: JavaScript, Python, PHP (PCRE) или Яндекс Метрика.
  3. Добавьте строки, которые должны совпасть, и строки, которые совпадать не должны. Вторые важнее: именно они ловят слишком широкие шаблоны.
  4. Получите выражение с разбором каждой части и посмотрите подсветку совпадений в браузере.
  5. Если пример не прошёл, отправьте ошибку модели и получите исправленный вариант.

Готовая формулировка запроса: «Python. Найти в тексте номера телефонов РФ. Должны совпасть: +7 912 345-67-89, 8(912)3456789, 89123456789. Не должны: 12345, +1 202 555 0143, 8-800-555-35-35-1. Нужна группа с 10 цифрами без кода страны».

Чем отличаются диалекты: JS, Python re, PCRE и RE2

Одна и та же регулярка не всегда переносится между языками. Синтаксис групп, просмотр назад и даже смысл \d различаются. Поэтому инструмент спрашивает язык заранее и пишет выражение под конкретный движок.

ВозможностьJavaScriptPython rePCRE (PHP)RE2 (Метрика)
Именованная группа(?<name>…)(?P<name>…)(?<name>…), (?’name’…) и (?P<name>…)(?P<name>…)
Просмотр назад (?<=…)Внутри любой шаблонТолько фиксированной длиныНужна известная максимальная длина, по умолчанию до 255 символов на веткуНе поддерживается
\dТолько [0-9]Любые цифры Юникода, [0-9] — с флагом re.ASCII[0-9], пока не включён PCRE2_UCP[0-9]
Атомарные группы и сверхжадные квантификаторыНетЕсть с Python 3.11ЕстьНет
Обратные ссылки \1ЕстьЕстьЕстьНет

Самая частая ловушка при переносе — именованные группы. Выражение (?<year>\d{4}) из JavaScript Python не примет: ему нужен синтаксис (?P<year>\d{4}). PCRE понимает оба варианта, поэтому регулярки из PHP часто «работают везде, кроме Python». Вторая ловушка — просмотр назад: в Python шаблон внутри (?<=…) должен совпадать со строкой фиксированной длины, а a* или a{3,4} там запрещены.

Где задаются флаги в разных языках

Флаги меняют поведение всего шаблона: регистр, многострочный режим, точку, которая захватывает перевод строки. В JavaScript они пишутся после закрывающей косой черты, например /^\d+$/gm, или вторым аргументом конструктора RegExp. В Python флаги передают константами: re.IGNORECASE, re.MULTILINE, re.DOTALL, re.VERBOSE, их объединяют через |. В PHP модификаторы ставят после разделителя шаблона: /шаблон/iu.

Для кириллицы флаг Юникода особенно важен. В PHP без модификатора u шаблон работает с байтами, и русская буква в UTF-8 превращается в два символа, поэтому квантификаторы и классы ведут себя неожиданно. Нейросеть всегда указывает нужные флаги рядом с выражением, а в разборе объясняет, зачем каждый из них.

Регулярка для email: почему идеальной нет

Запрос «регулярка для email» — один из самых частых, и на него нет единственного правильного ответа. Полная грамматика адресов из RFC 5322 допускает комментарии, кавычки и пробелы, которых в реальных формах никто не вводит. Даже стандарт HTML намеренно отступает от RFC 5322 и описывает собственное, более практичное правило для поля type="email".

Поэтому инструмент сначала спрашивает цель. Для проверки поля в форме достаточно простого шаблона: что-то до @, домен с точкой, без пробелов. Окончательная проверка адреса — только письмом с подтверждением. Для поиска адресов в большом тексте нужен другой шаблон, с границами слова, чтобы не захватить соседнюю пунктуацию.

^[^\s@]+@[^\s@]+\.[^\s@]+$

Этот шаблон для поля формы читается так: один или больше символов, кроме пробела и @, затем @, затем домен, точка и зона. Он пропустит редкие корректные адреса с кириллическим доменом и отсеет явные опечатки вроде пропущенной точки. Большего от регулярки для email ждать не стоит, а строгие шаблоны на сотни символов чаще мешают, чем помогают.

Регулярные выражения в Яндекс Метрике

SEO-специалисты и маркетологи пишут регулярки для целей и сегментов в Метрике, и там свои правила. Метрика обрабатывает выражения по синтаксису RE2 и применяет их к полному URL страницы, включая протокол и домен. Ещё одна особенность: выражение проверяется дважды — для URL с www и без него.

Из-за RE2 в Метрике не работают просмотр вперёд и назад и обратные ссылки. Если вы привыкли исключать страницы конструкцией ^(?!.*utm), в цели это не сработает — условие придётся разбить на «содержит» и «не содержит» в настройках. Выберите «Яндекс Метрика» в конструкторе, и нейросеть не станет использовать то, чего RE2 не умеет.

^https?://(www\.)?example\.ru/catalog/[^/]+/\d+/?$

Это выражение отберёт карточки товаров вида /catalog/chairs/123/ и не захватит страницы разделов. Точка в домене экранирована: без обратной косой черты она означает «любой символ».

Типичные ошибки в регулярных выражениях

  • Забытые якоря. Без ^ и $ шаблон \d{6} найдёт «индекс» внутри номера карты.
  • Неэкранированная точка. site.ru совпадёт и с «siteXru».
  • Жадные квантификаторы. <.*> в HTML захватит всё от первого тега до последнего; нужна ленивая версия <.*?> или класс [^>]*.
  • Разбор HTML и JSON регуляркой. Для них есть парсеры; регулярка подходит для разовой выборки, но не для надёжной обработки.

Вложенные квантификаторы вроде (a+)+ или (\w+\s?)*$ на неудачной строке заставляют движок с возвратами перебирать огромное число вариантов. Это называют катастрофическим возвратом, а при атаке через пользовательский ввод — ReDoS. Если регулярка проверяет данные из формы или API, попросите нейросеть проверить её на этот риск и не принимайте шаблоны с вложенными повторами без необходимости.

Как проверить регулярку самостоятельно

Проверка в браузере на этой странице использует движок JavaScript. Для Python и PHP результат почти всегда совпадает, но не всегда: например, \d в Python по умолчанию шире. Поэтому финальную проверку стоит сделать в целевом языке.

  1. Соберите набор строк: 5–10 правильных, столько же почти правильных, пустую строку и очень длинную.
  2. В Python прогоните их через re.fullmatch, если строка должна совпасть целиком, или через re.findall для поиска.
  3. В PHP используйте preg_match и не забудьте флаг u для кириллицы.
  4. Для Метрики проверьте цель на реальных визитах в отчёте, прежде чем строить по ней рекламу.

Где регулярки пригодятся вместе с другими инструментами

Регулярка обычно — часть кода. Если нужна функция целиком, с чтением файла и сохранением результата, удобнее написать скрипт на Python или сгенерировать код на JavaScript. Для проверки данных на стороне сайта подойдёт генератор PHP-кода, а шаблоны, которые разбирают пользовательский ввод, полезно прогнать через поиск уязвимостей в коде.

Аливия работает без регистрации, круглосуточно и без VPN из России. Можно прислать файл TXT или CSV с примерами строк — так быстрее, чем вставлять их по одной. На бесплатном доступе действует дневной лимит запросов, на платных тарифах он больше.

Регулярные выражения: частые вопросы

Что такое регулярное выражение простыми словами?
Это шаблон для поиска текста: например, «три цифры, дефис, две цифры». Программа сравнивает с ним строки и находит подходящие. Регулярки используют для проверки форм, поиска в логах, замены текста и настройки целей в аналитике.

Как написать регулярное выражение для email?
Для проверки формы подойдёт простой шаблон вида ^[^\s@]+@[^\s@]+\.[^\s@]+$: что-то до @, домен с точкой, без пробелов. Идеальной регулярки под все адреса нет, а настоящая проверка — письмо с подтверждением. Для поиска в тексте нужен шаблон с границами слова.

Чем регулярки в Python отличаются от JavaScript?
Именованные группы в Python пишутся как (?P<name>…), в JavaScript — (?<name>…). В Python просмотр назад допускает только шаблоны фиксированной длины, а \d по умолчанию включает цифры Юникода. Укажите язык — нейросеть учтёт различия.

Какой синтаксис регулярных выражений в Яндекс Метрике?
Метрика использует RE2 и применяет выражение к полному URL с протоколом и доменом. В RE2 нет просмотра вперёд и назад и обратных ссылок. Выберите в конструкторе «Яндекс Метрика», чтобы получить совместимое выражение.

Как проверить регулярное выражение онлайн?
На этой странице проверка встроена: помощник прогоняет выражение по вашим примерам в браузере и подсвечивает совпадения. Проверка идёт движком JavaScript, поэтому для Python и PHP финальный прогон лучше сделать в целевом языке.

Что означает .* в регулярном выражении?
Точка — любой символ, кроме перевода строки, звёздочка — «ноль или больше раз». Вместе это «любая строка», причём жадно: захватывается максимум текста. Ленивая версия .*? берёт минимум.

Почему регулярка находит больше, чем нужно?
Обычно не хватает якорей ^ и $, границ слова \b или точка не экранирована. Добавьте в запрос строки, которые не должны совпадать, — нейросеть сузит шаблон и проверит его на них.

Можно ли регулярным выражением разобрать HTML?
Для разовой выборки — да, например, достать все ссылки из страницы. Для надёжной обработки HTML нужен парсер: вложенные теги и атрибуты в разном порядке ломают регулярки. Нейросеть подскажет подходящую библиотеку для вашего языка.

Что такое ReDoS?
Это атака, при которой специально подобранная строка заставляет регулярку с вложенными повторами работать очень долго. Опасны шаблоны вроде (a+)+ на пользовательском вводе. Попросите нейросеть проверить выражение на этот риск.

Можно ли прислать файл со строками для проверки?
Да, чат принимает TXT и CSV. Удобно разделить файл на две части: строки, которые должны совпасть, и строки, которые не должны. Так нейросеть сразу увидит, где шаблон ошибается.

Итог

Генератор регулярных выражений пишет шаблон под нужный движок — JavaScript, Python, PCRE или RE2 в Метрике — и сразу проверяет его на ваших примерах. Давайте строки, которые не должны совпадать: они ловят большинство ошибок. Финальный прогон делайте в целевом языке.

Автор и редактор страницы

Аливия Кирсанова

Основатель и руководитель сервиса «Аливия». Настраивает инструменты под задачи, подбирает модели и проверяет ответы по методике сайта.

  • В проекте с 2024 года
  • 350 инструментов настроено
Опубликовано:
Оцените материал