Просто пометьте часть регулярного выражения, которую вы хотите передать методу, с помощью группы захвата.
Например, если ваше регулярное выражение равно foo.*bar
и вас не интересуют foo
или bar
, сделайте регулярное выражение foo(.*)bar
.Затем всегда выбирайте группу 1 из Matcher
.
Ваш код будет выглядеть следующим образом:
method1(matcher1.group(1));
method2(matcher2.group(2));
...
Еще одним шагом будет замена ваших методов классами, реализующими подобное:
public interface MatchingMethod {
String getRegex();
void apply(String result);
}
Тогда вы можете легко автоматизировать задачу:
for (MatchingMethod mm : getAllMatchingMethods()) {
Pattern p = Pattern.compile(mm.getRegex());
Matcher m = p.matcher(input);
while (m.find()) {
mm.apply(m.group(1));
}
Обратите внимание, что если производительность важна, то предварительная компиляция Pattern
может улучшить время выполнения, если вы примените это кмного входов.