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

标签 python regex

我有一个字符串变量,它是一个巨大的 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/

相关文章:

python - 如何在python中安装fontTools

regex - 正则表达式匹配所有内容,直到最后一次出现/

python - 使用正则表达式从 python 中的列表项中删除子字符串

javascript - 无法根据正则表达式拆分字符串

java - 执行相当于 find 的操作。 -name 'myfile*.csv' 使用 Windows 和 Java

python - 在多处理或多线程应用程序中保留 cpu 时间

python - 应用引擎 : submitting form data to Google Spreadsheet

python - GPU内存溢出: Hyperparameter Tuning loop with varying models

python - 使用 tensorflow-gpu 1.14 和 tf.distribute.MirroredStrategy() 的自定义训练循环导致 ValueError

php - 为什么要同时使用 str_replace() 和 preg_replace()?