java.util.regex
(jdk 1.6)を使用201210(\d{5,5})Test
すると、サブジェクト文字列に適用される正規表現は、次のコードを前提として、(パターン)をキャプチャする20121000002Test
だけで、キャプチャgroup(0)
しません。group(1)
00002
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));
}
}
201210(\d{5,5})Test(\d{1,10})
不思議なことに、サブジェクト文字列に適用されるような別の同様の正規表現は、20121000002Test0000000099
グループ0と1をキャプチャしますが、グループ2はキャプチャしません。
それどころか、JavaScriptのRegExpオブジェクトを使用することにより、まったく同じサブジェクト文字列に適用されたまったく同じ正規表現が、予想どおりにすべてのグループをキャプチャします。これらのオンラインテスターを使用して、この事実を自分で確認し、再確認しました。
私はここで何か間違ったことをしていますか?それとも、Javaの正規表現ライブラリが本当にひどいのですか?