Отрицательное совпадение нескольких регулярных выражений

#python #regex #regex-lookarounds

#python #регулярное выражение #поиск регулярных выражений

Вопрос:

foo, bar, tag

Я хочу, чтобы мое регулярное выражение совпадало, если предложение не содержит все три слова вместе выше.

 foo bar goal
 

Но если слова все вместе, они не должны совпадать.

 foo bar tag
 

Я пробовал это регулярное выражение в Python, но не смог заставить его работать.

 ^(?!.*(foo)).*(?!.*(bar)).*(?!.*(tag)).*$
 

Есть идеи? Спасибо.

Комментарии:

1. Может быть проще сопоставить все слова вместе, а затем инвертировать результат теста. if not re.search(...):

Ответ №1:

Вы можете вложить положительные точки обзора в отрицательные точки обзора следующим образом:

 ^(?!(?=.*foo)(?=.*bar)(?=.*tag)).*$
 

Вот тестовые примеры