明智的表现是什么:
string.matches("regex")
或
Pattern.compile("regex").matches(string).find()
?
我指的是通过String.java
matches()
或Pattern.java
答案 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
的摘录