Метод lookingAt
Метод lookingAt класса Matcher пытается сопоставить
регулярное выражение с началом входной последовательности.
В отличие от метода matches, который требует полного
совпадения всей строки, lookingAt проверяет только
начало строки. Метод не принимает параметров и возвращает
true, если начало строки соответствует шаблону,
и false в противном случае. Важно, что при успешном
совпадении метод не продвигает позицию сопоставления -
она остаётся в начале строки, что позволяет вызывать
lookingAt многократно с одним и тем же результатом.
Синтаксис
matcher.lookingAt()
Пример
Давайте проверим, начинается ли строка с последовательности
цифр, используя метод lookingAt:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args)
{
String str = "12345abcde";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(str);
boolean res = matcher.lookingAt();
System.out.println(res);
}
}
Результат выполнения кода:
true
Пример
Давайте сравним работу методов lookingAt и
matches на строке, которая начинается с совпадения,
но не соответствует шаблону целиком:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args)
{
String str = "12345abcde";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(str);
System.out.println("lookingAt: " + matcher.lookingAt());
System.out.println("matches: " + matcher.matches());
}
}
Результат выполнения кода:
"lookingAt: true"
"matches: false"
Пример
Давайте проверим, что метод lookingAt не продвигает
позицию сопоставления, и вызовем его дважды подряд:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args)
{
String str = "abcde12345";
Pattern pattern = Pattern.compile("abc");
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.lookingAt());
System.out.println(matcher.lookingAt());
System.out.println(matcher.start());
}
}
Результат выполнения кода:
true
true
0