Как написать регулярное выражение с помощью ИИ

Как сформулировать задачу для регулярного выражения, попросить ИИ предложить шаблон и проверить его на обычных, граничных и ошибочных строках.

Портрет Григория Щедрина

Григорий Щедрин

ИИ-аналитик

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

Опишите, что должно совпадать

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

Например, задача «найти номер заявки» недостаточно точна. Нужны длина, допустимый префикс, разделители и требование к границам слова. Если формат не установлен, regex не сможет решить продуктовую неоднозначность.

Попросите объяснение для своего языка

Назовите язык программирования и версию, если она влияет на движок. Попросите модель вернуть шаблон, объяснить каждую группу, привести тесты и назвать ограничения. Не копируйте шаблон без проверки: обратные слэши могут меняться при вставке в строку кода.

В SYNTX можно использовать языковую модель для чернового выражения и пояснения. Она не запускает проект автоматически, поэтому проверку выполните сами. Новый пользователь получает пять токенов и пять запросов к языковым моделям; план FREE не ограничен по времени. Открыть SYNTX AI.

Пример: код из трёх заглавных букв

Допустим, нужно найти строку из трёх заглавных латинских букв, например ABC, но не совпадение внутри ABCD и не совпадение в xABC. В распространённых движках выражение с границами слова может выглядеть так: обратный слэш, буква b, диапазон A–Z, ровно три повтора, затем граница слова. Конкретная запись и экранирование зависят от языка и строки, в которой хранится шаблон. Проверьте её в документации своего движка.

Тестовый набор: ABC — должно совпасть; AB — нет; ABCD — нет; xABC — нет; ABC! — должно совпасть, если пунктуация считается границей. Если задача требует латинские буквы только в начале строки, понадобятся якоря начала и конца и отдельные проверки.

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

Избегайте слишком широкого шаблона

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

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

Проверка и сопровождение

Сохраните шаблон рядом с объяснением и тестовыми примерами. Если выражение меняется, обновите тесты и посмотрите, какие строки стали совпадать. В коде добавьте комментарий о цели, а не пересказ каждого символа. Не используйте один шаблон для разных требований только потому, что он «почти подходит».

Соберите набор примеров для теста

Для каждого правила подготовьте минимум по одному подходящему и неподходящему примеру. Если нужно найти почтовый адрес в тексте, добавьте обычный адрес, строку без домена, адрес с плюсом в имени и похожую строку с лишней точкой. Это поможет понять, соответствует ли выражение задаче, а не абстрактному представлению о формате.

Проверьте также контекст: должна ли находка быть отдельным словом, может ли она встретиться внутри ссылки, нужно ли сохранить группу символов. Попросите модель объяснить, какие части шаблона обязательны и где он может захватить лишнее. Если выражение будет обрабатывать много текста, оцените его не только на коротких строках, но и на длинном наборе. Сохраните примеры рядом с правилом, чтобы следующий человек мог изменить шаблон и сразу повторить те же проверки. Для сложной валидации помните: регулярное выражение не всегда заменяет полноценный разбор формата.

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

Можно ли доверять готовому regex из ИИ?

Нет. Проверьте синтаксис в целевом движке и протестируйте ожидаемые и неожиданные строки.

Почему выражение работает в онлайн-проверке, но не в коде?

Сервис и язык могут использовать разные движки или режимы. Учтите также экранирование строки.

Нужно ли проверять каждый пример?

Да, особенно границы формата и случаи, которые не должны совпасть. Несколько тестов быстро выявляют слишком широкое выражение.

Статья была полезна?