Метод usePattern
Метод usePattern класса Matcher заменяет
текущий шаблон, с которым работает данный Matcher,
на новый объект класса Pattern. При этом состояние
сопоставления полностью сбрасывается: позиция поиска
возвращается в начало входной строки, а все ранее
найденные группы становятся недоступными. В параметр
мы передаем новый объект Pattern, который заменит
исходный шаблон. Метод возвращает ссылку на текущий
объект Matcher, что позволяет выстраивать цепочки
вызовов.
Синтаксис
matcher.usePattern(pattern)
Пример
Давайте создадим Matcher для одного шаблона,
а затем заменим его на другой с помощью usePattern:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args)
{
Pattern p1 = Pattern.compile("\\d+");
Matcher matcher = p1.matcher("abc123");
System.out.println(matcher.find());
System.out.println(matcher.group());
Pattern p2 = Pattern.compile("[a-z]+");
matcher.usePattern(p2);
System.out.println(matcher.find());
System.out.println(matcher.group());
}
}
Результат выполнения кода:
true
"123"
true
"abc"
Пример
После вызова usePattern позиция поиска
сбрасывается в начало строки. Давайте убедимся
в этом на примере:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args)
{
Pattern p1 = Pattern.compile("[a-z]+");
Matcher matcher = p1.matcher("abc123");
System.out.println(matcher.find());
System.out.println(matcher.start());
Pattern p2 = Pattern.compile("\\d+");
matcher.usePattern(p2);
System.out.println(matcher.find());
System.out.println(matcher.start());
}
}
Результат выполнения кода:
true
0
true
3