我下面的代碼,並在其中我試圖打印所有使用Matcher.group()
字符串中的匹配。爲什麼Matcher.group拋出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));
}
上面的代碼拋出線程 「main」 java.lang.IndexOutOfBoundsException 異常:無組2異常。
所以我的問題是Matcher.group()
如何工作和正如你可以看到我會有3個匹配的字符串,我怎麼能打印所有使用group()
。
你可能想要設置一個斷點來檢查'matcher'是什麼,'group'和'find'如何相互作用等等。 – luk2302
@ luk2302,我確實使用過調試器,但並不知道'group'和'find '互動, –