我将这个表达式(在一个更大的正则表达式中)缩小为将页面响应时间从 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+ 秒。