gpt4 book ai didi

java - 基于正则表达式的替换效率

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

以下哪项会更有效、更好用?

value.replaceAll("['‘’`]","")

value.replaceAll("['‘’`]+","")

我的猜测是,对于没有替换字符的字符串,或者至少没有它们的序列,这两个是相同的,或者第一个最好不那么复杂。

但是,如果我正在查看确实具有被替换字符的子序列的字符串怎么办?第二个会更好吗?

'abababababababab'.replaceAll("ab","") 

对比

'abababababababab'.replaceAll("(ab)+","") 

如果这对这个问题很重要,我会使用 Java。

最佳答案

根据分析,我会说第一个选项比第二个选项更快。尽管我必须说这种差异不容易衡量,除非您有一个巨大的字符串作为输入(或复杂的正则表达式)。

所以让我们调用这个 regex1:

'abababababababab'.replaceAll("ab","")

还有这个正则表达式 2:

'abababababababab'.replaceAll("(ab)+","")

我们从Java API知道replaceAll 将看到 both the conditions as a regex并尝试替换正则表达式引擎之后的字符串。

我们可以看到regex1只有char序列;而 regex2 有一个 group , 一个字符序列和一个 quantifier metacharacters必须相应地解释(更多信息 here )。因此 regex2 比 regex1 需要更多的处理。

一般来说,这两个选项对于大多数用途来说都非常快。您可以通过阅读本文更详细地了解该过程:Regular Expression Matching Can Be Simple And Fast

仍然,使用 PatternMatcher对于更复杂的正则表达式是一个更快的选择...(更多信息 here)。

在这种情况下,我推荐的另外一本书是:Optimizing Regular Expressions in Java

关于java - 基于正则表达式的替换效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11309681/

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