次の正規表現パターンがあります^(\d+)(;(\d+))*$
。そして、その正規表現内のグループの数とそれぞれの値を取得したいと思います。
groupCountとgroupを使用してみましたが、次の結果が得られます。
Input: "1"
Groups: 3
"1", "1", null, null
Input: "1;2"
Groups: 3
"1;2", "1", ";2", "2"
Input: "1;2;3"
Groups: 3
"1;2;3", "1", ";3", "3"
Input: "1;2;3;4"
Groups: 3
"1;2;3;4", "1", ";4", "4"
私は最初のもの"1"
がgroupCountから1を取得することを期待していました。そして最後の場合"1;2;3;4"
、、、私はgroupCountから7を取得することを期待していました。
私が期待していたものを返すMatcherのメソッドはありますか?
編集:上記の出力を生成したコードを追加しました
String input = "1";
Pattern pattern = Pattern.compile("^(\\d+)(;(\\d+))*$");
for (int i = 2; i < 6; ++i) {
Matcher matcher = pattern.matcher(input);
matcher.matches();
System.out.println("Input: \"" + input + "\"\nGroups: " + matcher.groupCount());
for (int group = 0; group <= matcher.groupCount(); ++group) {
System.out.print("\"" + matcher.group(group) + "\", ");
}
System.out.println();
input += ";" + i;
}