gpt4 book ai didi

c++ - 与其他跨平台正则表达式库相比,Oniguruma 有多好?

转载 作者:可可西里 更新时间:2023-11-01 16:33:11 28 4
gpt4 key购买 nike

我们正试图摆脱 boost::regex 和它糟糕的性能。根据this基准,Oniguruma总体来说是最好的。

我们有多个正则表达式(并且总是在变化),我们将它们应用于从中等(100 个字符)到巨大(1k 个字符)的字符串......所以这是一个非常异构的环境。

你们中有人成功地使用过它吗?您是否建议选择更“标准”的,如 PCRE 或 RE2?

谢谢!

最佳答案

这两种实现方式(FSA 和 BT)具有完全不同的行为,您可以在此处的右侧栏(电子邮件)中看到。

oniguruma 通常速度很快,但如果您对特定正则表达式“不走运”,则有可能运行缓慢。那是因为它是一种回溯算法。

相比之下,虽然 re2 通常稍微慢一点,但它没有相同的风险 - 它的时间永远不会[*]以同样的方式爆炸(它没有最坏情况下的指数行为)。

所以这取决于细节。如果您确信您的正则表达式是安全的,或者愿意检测和中止慢速匹配,oniguruma 是有道理的。但就我个人而言,我倾向于为 re2 的安全支付多一点(不多)。

有关此的更多信息,请参阅 http://swtch.com/~rsc/regexp/regexp1.html (由 re2 作者)。

[*] 嗯,也许永远不会太强。对于某些正则表达式,我认为它必须在某些情况下退回到 BT 方法(可能涉及匹配以前的匹配和前瞻)。但它在大多数正则表达式上仍然更安全。

关于c++ - 与其他跨平台正则表达式库相比,Oniguruma 有多好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11996988/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com