Я пытаюсь сравнить строку с регулярным выражением в python следующим образом:
#!/usr/bin/env python3
import re
str1 = "Expecting property name: line \d+ column \d+ (char \d+)"
str2 = "Expecting property name: line 3 column 2 (char 44)"
print(re.search(str1,str2))
if re.search(str1,str2) :
print("Strings are same")
else :
print("Strings are different")
Я всегда получаю следующий вывод
Никто
Строки разные
Я не могу понять, что здесь не так.
Может ли кто-нибудь предложить/указать мне, что с этим не так?
Вам нужно избегать скобок, так как в противном случае они рассматриваются как "директивы группировки" с помощью механизма регулярных выражений:
str1 = r"Expecting property name: line \d+ column \d+ \(char \d+\)" # ^ ^
Обратите внимание: поиск не означает полное совпадение: это просто означает, что подстрока str2
должна соответствовать. Таким образом, вы можете добавить ^
и $
anchors.
r"^Expecting property name: line \d+ column \d+ \(char \d+\)$"
верно?
'foobar Expecting property name: line 123 column 123 \(char 123) qux other nonsense'
приемлемо, то, конечно, вы можете опустить якоря. Это зависит от того, что вы хотите.
str1 = r"Expecting property name: line \d+ column \d+ \(char \d+\)"