Pattern.matches vs string.matches( "regex" )



什么是更好的性能:
string.matches("regex")

Pattern.compile("regex").matches(string).find()

我指的是通过String.javamatches()Pattern.java 中的API进行匹配

String.matches(String regex):的实现

public boolean matches(String regex) {
    return Pattern.matches(regex, this);
}

Pattern.matches(String regex, CharSequence input):的实现

public static boolean matches(String regex, CharSequence input) {
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);
    return m.matches();
}

结论:str.matches(regex)Pattern.compile(regex).matcher(str).matches()完全相同。

注意:与matches()相同,与find()不同

如果:,则使用Pattern.compile()更好/必要

  • 您需要访问Matcher
    例如,您需要捕获组的结果。

  • 您多次执行相同的matches(regex)调用
    只编译一次regex模式可以提高性能。

这取决于您是否将重用正则表达式。如果你这样做了,最好只编译一次。String中的matches函数是根据Pattern.matches:定义的

public boolean matches(String regex) {
    return Pattern.matches(regex, this);
}

openJDK7 中的代码段

最新更新