Я пытаюсь написать регулярное выражение Python, которое соответствует группе, только если оно не содержит определенную строку.Группа соответствия RegEx, которая не содержит последовательности
Рассмотрим следующие строки:
VOID ALL $-11.20
CANCEL $-6.00
-10.00% LP $-0.25
LOYALTY CARD $-2.50
Я хотел бы регулярное выражение, чтобы соответствовать и извлекать -10.00% LP
и LOYALTY CARD
. Он отклонит строку, если она встречает VOID ALL
или CANCEL
.
У меня есть следующее regex (?P<discount_reason>(?!(CANCEL|VOID\sALL)).+) [$|£]?-(?P<discount_value>[0-9]*\.[0-9]{2})
, которое правильно извлекает группы discount_reason и discount_value, но с радостью принимает VOID ALL
и CANCEL
.
Что мне не хватает?
Благодарит миллион. Оно работает! Не могли бы вы объяснить, как это работает? Я пытаюсь оборачивать голову '(?!. * VOID ALL |. * CANCEL)'. – CadentOrange
Это был якорь '^', который действительно запустил его работу, но я также поставил '. *' В переднюю часть каждой строки чередования в отрицательном образе. Это означает «все» ... затем VOID ALL »' –