String.matches внутренне делегирует Matcher.matches.
public boolean matches(String regex) {
return Pattern.matches(regex, this);
}
public static boolean matches(String regex, CharSequence input) {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
return m.matches();
}
Если вы повторно используете объект Pattern, тогда будет некоторое повышение производительности. Также при использовании Pattern / Matcher вы можете группировать свои регулярные выражения и получать соответствующие части.
Суть в том, что если у вас есть регулярное выражение, которое вы будете использовать только один раз, и вам не нужно анализировать вашу строку, чтобы получить совпадающие части, используйте другое Но если вы собираетесь использовать одно и то же регулярное выражение для нескольких строк или вам нужны части строки, основанные на регулярном выражении, создайте шаблон и используйте Matcher, используя его.