キャプチャグループに数量詞があるため、最後の反復からのキャプチャのみが表示されます。幸いなことに、.NETは(他の実装とは異なり) CaptureCollectionクラスを介してすべての反復からキャプチャを取得するためのメカニズムを提供します。リンクされたドキュメントから:
数量詞がキャプチャグループに適用される場合、CaptureCollectionにはキャプチャされたサブストリングごとに1つのCaptureオブジェクトが含まれ、Groupオブジェクトは最後にキャプチャされたサブストリングに関する情報のみを提供します。
そして、リンクされたドキュメントから提供された例:
// Match a sentence with a pattern that has a quantifier that
// applies to the entire group.
pattern = @"(\b\w+\W{1,2})+";
match = Regex.Match(input, pattern);
Console.WriteLine("Pattern: " + pattern);
Console.WriteLine("Match: " + match.Value);
Console.WriteLine(" Match.Captures: {0}", match.Captures.Count);
for (int ctr = 0; ctr < match.Captures.Count; ctr++)
Console.WriteLine(" {0}: '{1}'", ctr, match.Captures[ctr].Value);
Console.WriteLine(" Match.Groups: {0}", match.Groups.Count);
for (int groupCtr = 0; groupCtr < match.Groups.Count; groupCtr++)
{
Console.WriteLine(" Group {0}: '{1}'", groupCtr, match.Groups[groupCtr].Value);
Console.WriteLine(" Group({0}).Captures: {1}",
groupCtr, match.Groups[groupCtr].Captures.Count);
for (int captureCtr = 0; captureCtr < match.Groups[groupCtr].Captures.Count; captureCtr++)
Console.WriteLine(" Capture {0}: '{1}'", captureCtr, match.Groups[groupCtr].Captures[captureCtr].Value);
}