匹配文字字符串 '\$'

MYG*_*YGz 2 python regex python-2.7

我正在尝试匹配文字字符串 '\$'。我通过反斜杠转义了 '\' 和 '$'。为什么当我转义模式中的反斜杠时不起作用?但是如果我使用一个点,那么它就起作用了。

import re

print re.match('\$','\$')
print re.match('\\\$','\$')
print re.match('.\$','\$')
Run Code Online (Sandbox Code Playgroud)

输出:

None
None
<_sre.SRE_Match object at 0x7fb89cef7b90>
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下内部发生了什么吗?

Was*_*mad 5

您应该为此使用re.escape()函数:

转义(字符串)

返回所有非字母数字反斜杠的字符串;如果您想匹配可能包含正则表达式元字符的任意文字字符串,这将非常有用。

例如:

import re
val = re.escape('\$') # val = '\\\$'
print re.match(val,'\$')
Run Code Online (Sandbox Code Playgroud)

它输出:

<_sre.SRE_Match object; span=(0, 2), match='\\$'>
Run Code Online (Sandbox Code Playgroud)

这相当于@TigerhawkT3他的回答中提到的。