我有一个字符串变量,它是一个巨大的 HTML 文档。它包含 80,000 多个字符。
我正在尝试有效地测试它是否是一个完整的 HTML 文档。我已将“完整”定义为以 </html>
结尾的文档。并且最后可能有空格(例如换行符)。
我最初编写了这段代码:
if re.search(r'</html>\s*$', content):
# complete HTML
我的一位同事对此发表了评论,说该正则表达式的匹配逻辑可能无法通过字符串进行向后搜索以最有效。他建议改用此代码:
if content.rstrip().endswith('</html>'):
# complete HTML
我们确实需要优化,因为此代码运行非常频繁。
正则表达式代码是否会向后搜索字符串,因为它包含 $
性格?
最佳答案
不,正则表达式引擎将寻找最长的最左边匹配。它可能可以优化查找静态字符串 </html>
相当快;用于锚定的静态绳子越长,它运行的速度就越快。但我同意你同事的建议。
关于python - 将使用以 '$' 结尾的正则表达式进行优化的向后搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683571/