gpt4 book ai didi

c# - 看似无辜的 .NET 正则表达式使页面响应时间增加 10 倍

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:58 25 4
gpt4 key购买 nike

我已经缩小了这个表达式(在一个更大的正则表达式中)作为将页面响应时间从 0.7 秒缩短到 10 秒:

[^\.]{10,}[\.\?\!]\s*$

它的目的是检测一个至少 10 个字符长的句子(我知道它并不完美并且可以从自然语言解析中获益)......但是这个表达式到底是什么导致页面响应时间像那样爆炸?

Regex 本身不应该受到指责,因为它还有其他组件:

private static Regex innerTextFilterEx = new Regex(@"part1|part2|<faulty-part-above>", RegexOptions.Compiled | RegexOptions.IgnoreCase);

删除 <faulty-part-above>在 0.7 秒内执行,加上它会回到 10+ 秒。

最佳答案

此类问题最常见的原因是交替匹配多种方式,导致正则表达式引擎回溯过多。所以第一件事是你“看似无辜”的表达的上下文很重要。

将看似无辜的表情放在交替的第一位会有所不同吗?正在搜索的字符串的长度在多大程度上有所不同?

尤其要注意交替的不同部分中的量词。是否存在您的主题的一部分可能在交替的任何一部分中匹配的情况。 (例如,* 可以匹配某事物的零个实例。你需要那个吗?看看替代项之间的交互。

关于c# - 看似无辜的 .NET 正则表达式使页面响应时间增加 10 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236128/

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