什么是更好的性能:string.matches("regex")
或Pattern.compile("regex").matches(string).find()
?
我指的是通过String.java
的matches()
或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 中的代码段