正则表达式与Python中的特殊字符不匹配
问题描述:
我不明白为什么下面的代码片段返回false。我知道特殊字符必须转义,但re.escape()已经做到了。正则表达式与Python中的特殊字符不匹配
import re
string = re.escape('$')
pattern = re.compile(string)
print(bool(pattern.match(string)))
答
你正在逃避错误的。要搜索的字符串不需要修改。但是,你在模式中包含的字符串需要进行匹配。
import re
string = '$'
pattern = re.compile(re.escape(string))
print(bool(pattern.match(string)))
在此,图案\$
(匹配字面$
)是对字符串"$"
匹配,并且成功。
在您的例子中,图案\$
(匹配字面$
)是对字符串"\$"
(在Python r"\$"
或"\\$"
)匹配,并且因为match
需要图案,以覆盖整个字符串失败,并且反斜杠左无法比拟的。
匹配应该从字符串的开头匹配。你的字符串是'\ $','''不是'$'。 –
@SebastianProske我不明白哈哈。我使用相同的字符串模式和字符串进行匹配。 – latenightcode
正则表达式'\ $'匹配文字'$',你的字符串不以'$'开始。 –