使用以'$'结尾的正则表达式会进行优化的向后搜索

时间:2015-04-16 18:52:53

标签: python regex

我有一个字符串变量,它是一个巨大的HTML文档。它包含80,000多个字符。

我正在尝试有效地测试它是否是完整的HTML文档。我已经定义了#34;完成&#34;作为以</html>结尾的文档,并且最后可能有空格(例如新行)。

我最初写了这段代码:

if re.search(r'</html>\s*$', content):
    # complete HTML

我的一位同事对此发表评论说,该正则表达式的匹配逻辑可能无法通过字符串向后搜索最有效。他建议改用此代码:

if content.rstrip().endswith('</html>'):
    # complete HTML

我们需要优化,因为此代码经常运行。

正则表达式代码是否会对字符串进行向后搜索,因为它包含$字符?

1 个答案:

答案 0 :(得分:3)

不,正则表达式引擎将寻找最长的最左边的匹配。它可以很快地优化以便很快找到静态字符串</html>;您可以为锚定提供的静态字符串越长,它运行得越快。但我同意你同事的建议。