如何在python中使用'\ Q'和'\ E'正则表达式符号?

waf*_*waf 5 python regex escaping

我认为这应该有用,但它没有:

import re
if re.match("\Qbla\E", "bla"):
    print "works!"
Run Code Online (Sandbox Code Playgroud)

为什么它不起作用?我可以在python中使用'\ Q'和'\ E'符号吗?怎么样?

rua*_*akh 11

Python的正则表达式引擎不支持这些; 参见7.2.1节"正则表达式语法" Python文档中为它的列表支持.但是,您可以通过写作获得相同的效果re.match(re.escape("bla"), "bla"); re.escape是一个在所有特殊字符之前插入反斜杠的函数.

顺便说一句,你通常应该使用"原始"字符串,r"..."而不仅仅是"...",因为否则反斜杠将被处理两次(一次解析字符串,然后再由正则表达式引擎处理),这意味着你必须编写\\b相反的东西的\b.使用r"..."防止第一次处理通过,所以你可以写\b.