加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:35:22 所属栏目:Java 来源:网络整理
导读:以下哪项更有效,更好用? value.replaceAll("['‘’`]","")value.replaceAll("['‘’`]+","") 我的猜测是,对于没有被替换的字符串的字符串,或者至少没有它们的序列,两者是相同的,或者第一个更好是不那么复杂. 但是,如果我正在查看字符串被替换的字符串,那该
以下哪项更有效,更好用?

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

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

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

但是,如果我正在查看字符串被替换的字符串,那该怎么办?
第二个会更好吗?

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

V.S.

'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,一个char序列和一个必须相应解释的quantifier metacharacters(更多信息here).因此regex2需要比regex1更多的处理.

通常,对于大多数用途而言,这两种选择都非常快通过阅读本文,您可以获得有关该过程的更详细视图:Regular Expression Matching Can Be Simple And Fast

尽管如此,使用Pattern和Matcher更复杂的正则表达式是一个更快的选择……(更多信息here).

另外,我在这个场景中推荐的另一个读物是:Optimizing Regular Expressions in Java

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读