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?