以下哪项更有效,更好用?
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。