为什么重新逃离太空

Che*_* Qi 4 python regex

最近,我刚刚发现re.escape从字符串快速获取正则表达式很有用。当我传递类似的字符串时'a b c',我感到困惑,为什么每个空格都被\字符转义。AFAIK,编写等效表达式来匹配该字符串,因此不必转义空格字符。为什么会发生这种差异?谢谢。

Oli*_*ich 5

可以,因为它是显式的。一个空格可以从字面上匹配一个空格,但是它也可以是冗长的正则表达式中正则表达式的一部分,而不是用于匹配。

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

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

r = re.compile(r"""a #match a
b #match b
c #match c
"""
Run Code Online (Sandbox Code Playgroud)

最后一个将使用re.VERBOSE进行编译,这是一种在源代码中很好地可读地编写正则表达式的方法。此正则表达式将完全忽略空格,因此不符合您的情况。使用正则表达式时,请始终牢记,所有不明确的内容都会在星期日凌晨3点失败。