MishaChitalnik
@MishaChitalnik
Осваиваю регулярные выражения с нуля

Как в RegExp исключить отрицание и оставить только утверждение?

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

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

Очевидно, что это ответ утвердительный, под него попадают близкие по смыслу варианты «да», «ну да», «в принципе да», «угу», «ага». Я написал регулярку, которая такие вопросы находит:

(?=.*(^|\s)(да|ага|угу)).*

Потом я подумал, что контекстуально на вопрос «удобно ли вам» может подойти утвердительный ответ пользователя «удобно». Я добавил этот вариант в регулярку.

(?=.*(^|\s)(удобно|да|ага|угу)).*

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

Гуглил, но ничего подходящего не нашел. Из того, что мне удалось нагуглить, я составил такую регулярку, но она тоже не подходит:
(?=.*(?!не))(?=.*(^|\s)(удобно|да|ага|угу)).*

Подскажите, пожалуйста, как составить регуряное выражение, которое искало бы только утвердительные ответы, а отрицательные не искало бы? Насколько знаю, регулярки универсальны, но допустим, буду её использовать для Питона.
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@PavelMos
возможно сделать универсальный разбор с помощью регулярных нельзя, слишком много комбинаций.
Можно пробовать матч отдельно на Да и Нет. Сначала на нет проверить
https://regex101.com/r/jJR5wU/1
(^не|\sне|неудобно).*(удобно)
мне не слишком удобно
не удобно
нет, не удобно
неудобно

потом на Да.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы