我不知道如何用簡單的英文來解釋問題,所以我以自己的正則表達式爲例。我有一些類似的(該例子是相當多的簡化):如果多個事件匹配,是否有辦法捕獲每個組?
((\\d+) - (\\d+)\n)+
這種模式,這些線在一次匹配:
123 - 23
32 - 321
3 - 0
99 - 55
該模式包含3組:第一個行匹配時,第二個匹配行中的第一個數字,第三個匹配行中的第二個數字。
是否有可能獲得所有這些數字?匹配只有3個組。第一個返回99 - 55
,第二個 - 99
和第三個 - 55
。
SSCCE:
class Test {
private static final Pattern pattern = Pattern.compile("((\\d+) - (\\d+)\n)+");
public static void parseInput(String input) {
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
for (int i = 0; i <= matcher.groupCount(); i++) {
System.out.println("------------");
System.out.println("Group " + i + ": " + matcher.group(i));
}
System.out.println();
}
}
public static void main(String[] args) {
parseInput("123 - 23\n32 - 321\n3 - 0\n99 - 55\n");
}
}
是匹配器嗎?matches()或matcher.find(),每次調用它都會重新執行? (或兩者兼而有之!) – 2010-11-26 12:19:38