为什么re.escape逃脱了空间

时间:2015-09-06 03:42:49

标签: python regex

最近,我发现re.escape对于快速从字符串中获取正则表达式非常有用。当我传递像'a b c'这样的字符串时,我很困惑为什么每个空格都以\字符进行转义。 AFAIK,写一个等效的表达式来匹配该字符串,它是不必要的逃避空格字符。为什么会出现这种差异?感谢。

1 个答案:

答案 0 :(得分:4)

确实如此,因为它是明确的。空格可以字面上与空格匹配,但它也可以是详细正则表达式中正则表达式的一部分,而不是用于匹配。

得到的正则表达式,我猜/a\ b\ c/,是一个非常明确的正则表达式,匹配a后跟一个空格,后跟一个b,后跟一个空格,后跟一个c。

如果您自己编写,也可以使用/a\sb\sc/来匹配字母之间的任何空格。甚至:

r = re.compile(r"""a #match a
b #match b
c #match c
"""

最后一个将使用re.VERBOSE编译,并且是一种在源代码中编写正则表达式非常好的方法。这个正则表达式将完全忽略空格,因此不符合您的情况。有了正则表达式,请记住,所有不明确的事情都会在凌晨3点的早晨失败。