У меня есть шаблон Java, который я хотел бы сопоставить. Я хочу, чтобы мой первоначальный паттерн соответствовал первому его появлению. Тем не менее, я считаю
public static void main(String[] args)
{
final String expression = "(\\s*(a{1}\\s*b{1})\\s*)";
Scanner scanner1 = new Scanner(" ab");
//should be rejected
Scanner scanner2 = new Scanner("cab");
System.out.println(scanner1.findWithinHorizon(expression, 0));
System.out.println(scanner2.findWithinHorizon(expression, 0));
}
Когда я запускаю приведенный выше код, я получаю следующий вывод:
ab
ab
Я пытался изменить шаблон для использования неохотных и притяжательных квантификаторов, но ни один из них, похоже, не дает ожидаемых результатов. Что я тут не так делаю?