我有一个字符串变量,它是一个巨大的HTML文档。它包含80,000多个字符。
我正在尝试有效地测试它是否是完整的HTML文档。我已经定义了#34;完成&#34;作为以</html>
结尾的文档,并且最后可能有空格(例如新行)。
我最初写了这段代码:
if re.search(r'</html>\s*$', content):
# complete HTML
我的一位同事对此发表评论说,该正则表达式的匹配逻辑可能无法通过字符串向后搜索最有效。他建议改用此代码:
if content.rstrip().endswith('</html>'):
# complete HTML
我们需要优化,因为此代码经常运行。
正则表达式代码是否会对字符串进行向后搜索,因为它包含$
字符?
答案 0 :(得分:3)
不,正则表达式引擎将寻找最长的最左边的匹配。它可以很快地优化以便很快找到静态字符串</html>
;您可以为锚定提供的静态字符串越长,它运行得越快。但我同意你同事的建议。