【问题标题】:How to use '\Q' and '\E' regex symbols in python?如何在 python 中使用 '\Q' 和 '\E' 正则表达式符号?
【发布时间】:2012-03-07 20:10:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: python regex escaping


    【解决方案1】:

    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,但是 . . .
    • @ruakh 这不是正则表达式,相信我。 :)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-08-26
        • 2011-01-23
        • 1970-01-01
        • 2015-05-31
        • 2013-02-14
        • 2013-01-12
        • 2015-04-27
        • 2015-01-23
        • 2015-10-29
        相关资源
        最近更新 更多