【发布时间】:2012-03-07 20:10:46
【问题描述】:
我认为这应该可行,但它没有:
import re
if re.match("\Qbla\E", "bla"):
print "works!"
为什么它不起作用?我可以在 python 中使用 '\Q' 和 '\E' 符号吗?怎么样?
【问题讨论】:
我认为这应该可行,但它没有:
import re
if re.match("\Qbla\E", "bla"):
print "works!"
为什么它不起作用?我可以在 python 中使用 '\Q' 和 '\E' 符号吗?怎么样?
【问题讨论】:
Python 的正则表达式引擎不支持这些;请参阅§7.2.1 "Regular Expression Syntax" in the Python documentation 了解它所做 支持的列表。但是,您可以通过编写re.match(re.escape("bla"), "bla") 来获得相同的效果; re.escape 是一个在所有特殊字符前插入反斜杠的函数。
顺便说一句,您通常应该使用“原始”字符串r"..." 而不仅仅是"...",否则反斜杠将被处理两次(一次在解析字符串时,然后再次由正则表达式引擎处理),这意味着你必须写 \\b 而不是 \b。使用r"..." 可防止第一次处理通过,因此您只需编写\b。
【讨论】:
不幸的是,Python 不支持 \Q 和 \E 转义序列。你只需要自己逃避一切。
【讨论】:
Python 不支持 \Q...\E 。 参考:http://www.regular-expressions.info/refflavors.html
但这并不意味着它不支持转义元字符字符串。 参考:http://docs.python.org/library/re.html#re.escape
【讨论】: