Pattern.matches vs string.matches(“regex”)

时间:2016-05-11 19:21:05

标签: java regex

明智的表现是什么:
string.matches("regex")

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

我指的是通过String.java matches()Pattern.java

中的API进行匹配

2 个答案:

答案 0 :(得分:5)

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模式一次可以提高性能。

答案 1 :(得分:0)

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

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

来自openJDK7

的摘录