Regex kann nicht alle Gruppen erfassen

Verwendenjava.util.regex (jdk 1.6), der reguläre Ausdruck201210(\d{5,5})Test auf die Betreff-Zeichenfolge angewendet20121000002Test nur erfasstgroup(0) und nicht erfassengroup(1) (das Muster00002) wie es sollte, angesichts des folgenden Codes:

Pattern p1 = Pattern.compile("201210(\\d{5,5})Test");
Matcher m1 = p1.matcher("20121000002Test");

if(m1.find()){

    for(int i = 1; i<m1.groupCount(); i++){         
    System.out.println("number = "+m1.group(i));            
    }
}

Seltsamerweise ähnelt ein anderer regulärer Ausdruck201210(\d{5,5})Test(\d{1,10}) auf die Betreff-Zeichenfolge angewendet20121000002Test0000000099 erfasst Gruppe 0 und 1, aber nicht Gruppe 2.

Im Gegenteil, wenn Sie das RegExp-Objekt von JavaScript verwenden, erfassen genau dieselben regulären Ausdrücke, die auf dieselben Betreffzeichenfolgen angewendet werden, wie zu erwarten war, alle Gruppen. Ich habe diese Tatsache selbst überprüft und erneut überprüft, indem ich die folgenden Online-Tester verwendet habe:

http://www.regular-expressions.info/javascriptexample.htmlhttp://www.regextester.com/

Mache ich hier etwas falsch? Oder ist es so, dass Javas Regex-Bibliothek wirklich scheiße ist?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage