正则表达式如何在python中解释模式'\\\\ mac \\\\'

时间:2013-11-26 14:16:06

标签: python regex

我无法弄清楚正则表达式如何解释模式 \\\\mac\\\\ 。它出现在python中 \\mac\\

然而,我徘徊为什么python中的re模块不能将模式连续解释为 \mac\ ,因为它在单词 {{1}之前和之后都有双反斜杠 mac

中的

这是否意味着只进行一次转义并且不会转义已转义的字符串。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

使用regexp字符串文字(前缀为r)来表示这样的怪物:

r'\\\\mac\\\\'

然后你所有的角色都保持原样。

>>> print r'\\\\mac\\\\'
\\\\mac\\\\

如果你想要一个正则表达式匹配这样的怪物,你将需要逃避每个特殊角色:

>>> import re
>>> re.match(, r'\\\\mac\\\\')
<_sre.SRE_Match object at 0x7febff89d850>

如果发生多个解释步骤,则引用和转义通常会遇到难以理解的情况。在这种情况下,regexp函数match解释给定的字符串(\\\\\\\\mac\\\\\\\\)。由于反斜杠在regexp语言中具有特殊含义作为转义字符,因此必须转义逐字反斜杠(再次使用反斜杠)。所以每个反斜杠加倍。这就是为什么你需要八个字面反斜杠来表示四个逐字反斜杠。如果你不使用r表示法作为字符串文字的前缀,那么你必须加倍每个反斜杠,因为字符串解析器已经解释了字符串文字中没有r前缀的反斜杠,i。 E:

r'\\\\\\\\mac\\\\\\\\' == '\\\\\\\\\\\\\\\\mac\\\\\\\\\\\\\\\\'

这就是我称之为“怪物”的原因。