我认为这应该有效,但事实并非如此:
import re
if re.match("\Qbla\E", "bla"):
print "works!"
为什么它不起作用?我可以在python中使用'\ Q'和'\ E'符号吗?怎么样?
答案 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