Mam poniżej kod i w którym próbuję wydrukować wszystkie dopasowania w ciągu przy użyciu Matcher.group()
.Dlaczego Matcher.group rzuca wyjątek IndexOutOfBoundsException
public static void main(String[] args) {
String s = "foo\r\nbar\r\nfoo"
+ "foo, bar\r\nak = "
+ "foo, bar\r\nak = "
+ "bar, bar\r\nak = "
+ "blr05\r\nsdfsdkfhsklfh";
//System.out.println(s);
Matcher matcher = Pattern.compile("^ak\\s*=\\s*(\\w+)", Pattern.MULTILINE)
.matcher(s);
matcher.find();
// This one works
System.out.println("first match " + matcher.group(1));
// Below 2 lines throws IndexOutOfBoundsException
System.out.println("second match " + matcher.group(2));
System.out.println("third match " + matcher.group(3));
}
Powyższy kod rzuca Wyjątek w wątku "głównym" java.lang.IndexOutOfBoundsException: żadna grupa 2 wyjątku.
Moje pytanie brzmi: jak działa Matcher.group()
? Jak widzisz, będę miał 3 pasujące ciągi, jak mogę wydrukować je wszystkie za pomocą group()
.
Możesz chcieć ustawić punkt przerwania i sprawdzić, co ma 'matcher', jak interakcje' group' i 'find', itp. – luk2302
@ luk2302, użyłem debuggera, ale nie wiedziałem, jak' group' i 'find 'interakcja, –