我不明白为什么以下代码段返回false。我知道必须转义特殊字符,但 re.escape()已经这样做了。
import re
string = re.escape('$')
pattern = re.compile(string)
print(bool(pattern.match(string)))
答案 0 :(得分:1)
你正在逃避错误的人。要搜索的字符串不需要修改。但是你在模式中包含的字符串确实可以匹配。
import re
string = '$'
pattern = re.compile(re.escape(string))
print(bool(pattern.match(string)))
此处,模式\$
(匹配文字$
)与字符串"$"
匹配,并且成功。
在您的示例中,模式\$
(匹配文字$
)与字符串"\$"
(Python中的r"\$"
或"\\$"
)匹配,并且失败,因为match
要求模式覆盖整个字符串,反斜杠是不匹配的。