Implementierung von String.matches(String regex)
:
public boolean matches(String regex) {
return Pattern.matches(regex, this);
}
Implementierung von 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();
}
Fazit:str.matches(regex)
i s genau gleich wie Pattern.compile(regex).matcher(str).matches()
.
Hinweis: Wie matches()
, nicht identisch mit find()
.
Pattern.compile()
zu verwenden ist besser/erforderlich, wenn:
Sie benötigen Zugriff auf die Matcher
.
Zum Beispiel Sie benötigen das Ergebnis von Erfassungsgruppen.
Sie machen das gleiche matches(regex)
Anruf viele Male.
Nur einmal das regex
Muster kompilieren verbessert die Leistung.
Antwort: Es hängt davon ab. – Tom
Kann die Leistung von Äpfeln vs. Orangen nicht vergleichen. 'matches()' und 'find()' sind nicht die gleiche Operation. --- Auch wird der Code nicht kompiliert, da er 'matcher()' zwischen 'compile()' und 'find()' sein soll, nicht 'matches()'. – Andreas