gpt4 book ai didi

Java 正则表达式性能 : Reluctant Quantifier or Character Class?

转载 作者:搜寻专家 更新时间:2023-11-01 01:54:52 24 4
gpt4 key购买 nike

哪一个性能更好,或者(如果相等)哪个读起来更好?我试图匹配一对括号内的所有内容。

Pattern p1 = Pattern.compile("\\([^)]*\\)");
Pattern p2 = Pattern.compile("\\(.*?\\)");

对我来说,第二个读起来更好,但使用了可能令人困惑的勉强量词,我不确定这是否会导致性能损失。

编辑

不要错过表明这更好的答案:

Pattern p3 = Pattern.compile("\\([^)]*+\\)");

最佳答案

\([^)]*\) 会更快,尽管如果输入很小则不会引人注意。当您使 [^)]* 具有所有格时,可能会获得更好的 yield :[^)]*+。这样,正则表达式引擎将不会跟踪所有 [^)]* 匹配的字符,以防它需要回溯(这在 [^)] 的情况下不会发生) *\)).使模式具有所有格会导致正则表达式引擎记住该模式匹配的字符。

同样,这可能不会引起注意,但如果您的输入变大(r),我很确定* .*? 之间的区别>[^)]*小于[^)]*[^)]*+

* 运行一些基准测试以确保!

关于Java 正则表达式性能 : Reluctant Quantifier or Character Class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12742676/

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