正则表达式与Python中的特殊字符不匹配

问题描述:

我不明白为什么下面的代码片段返回false。我知道特殊字符必须转义,但re.escape()已经做到了。正则表达式与Python中的特殊字符不匹配

import re 

string = re.escape('$') 
pattern = re.compile(string) 
print(bool(pattern.match(string))) 
+1

匹配应该从字符串的开头匹配。你的字符串是'\ $','''不是'$'。 –

+0

@SebastianProske我不明白哈哈。我使用相同的字符串模式和字符串进行匹配。 – latenightcode

+0

正则表达式'\ $'匹配文字'$',你的字符串不以'$'开始。 –

你正在逃避错误的。要搜索的字符串不需要修改。但是,你在模式中包含的字符串需要进行匹配。

import re 

string = '$' 
pattern = re.compile(re.escape(string)) 
print(bool(pattern.match(string))) 

在此,图案\$(匹配字面$)是对字符串"$"匹配,并且成功。

在您的例子中,图案\$(匹配字面$)是对字符串"\$"(在Python r"\$""\\$")匹配,并且因为match需要图案,以覆盖整个字符串失败,并且反斜杠左无法比拟的。