为什么\ b在python re模块中不起作用?

use*_*994 9 python regex

众所周知,这\b意味着正则表达式中的单词边界.但是repython中的以下模块代码不起作用:

>>> p=re.compile('\baaa\b')
>>> p.findall("aaa vvv")
[]
Run Code Online (Sandbox Code Playgroud)

我认为返回的结果findall应该是["aaa"],但它没有找到任何东西.怎么了?

Bre*_*arn 23

您需要使用原始字符串,否则将\b其解释为字符串转义.使用r'\baaa\b'.(或者,你可以写'\\b',但对于更长的正则表达式来说,这更加尴尬.)