java – 基于正则表达式替换的效率
以下哪项更有效,更好用?
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |