Проблема в вашем регулярном выражении.Вы пытаетесь использовать символ ^
для отрицания регулярного выражения, но в вашей ситуации это не работает.^
отменяет только набор символов (набор символов внутри []
);даже в этом случае он только отрицает, если это первый символ.Например, [^aeiou]
означает «любой символ , за исключением a
, e
, i
, o
и u
».
Когда вы используете ^
за пределами набора символов, затем он соответствует началу строки.Например, ^aeiou
соответствует строке, которая начинается со строки aeiou
.
Итак, как бы вы отрицали регулярное выражение?Что ж, лучший способ, который я вижу, это использовать отрицательный прогноз , который является регулярным выражением, начинающимся с (?!
и заканчивающимся )
.Для вашего случая это довольно просто:
(?!/announcelist)
Итак, замените re.compile("^/announcelist")
на re.compile("(?!/announcelist)")
, и оно должно работать - по крайней мере, сработало здесь:)