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

时间:2012-03-07 20:10:47

标签: python regex escaping

我认为这应该有效,但事实并非如此:

import re
if re.match("\Qbla\E", "bla"):
    print "works!"

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

3 个答案:

答案 0 :(得分:11)

Python的正则表达式引擎不支持这些;请参阅§7.2.1 "Regular Expression Syntax" in the Python documentation以获取所做的支持的列表。但是,您可以通过编写re.match(re.escape("bla"), "bla")来获得相同的效果; re.escape是一个在所有特殊字符之前插入反斜杠的函数。

顺便说一下,你通常应该使用“原始”字符串,r"..."而不仅仅是"...",否则反斜杠将被处理两次(一次解析字符串时,然后再由正则表达式引擎),这意味着您必须编写\\b而不是\b之类的内容。使用r"..."会阻止第一次处理,因此您只需编写\b

答案 1 :(得分:1)

不幸的是,Python不支持\Q\E转义序列。你必须自己逃避一切。

答案 2 :(得分:1)

Python不支持\ Q ... \ E。 参考:http://www.regular-expressions.info/refflavors.html

但这并不意味着它不支持转义元字符串。 参考:http://docs.python.org/library/re.html#re.escape