Group.Nameプロパティを参照すると、対応するグループ名を取得することができます。 Groupが名前を持たないグループを表す場合、Nameプロパティはグループ名の代わりにグループ番号を文字列形式で返します。 また、Groupがマッチ全体を表すグループを表す場合も、グループ番号0を文字列形式で返します。

Group.Nameプロパティは、.NET Framework 4.7以降・.NET Standard 2.1以降で使用することができます。 それ以前のバージョンではGroupインスタンスから直接グループ名を取得することはできないため、Regex.GroupNameFromNumberメソッドを使うなどする必要があります。

Group.Nameプロパティでグループの名前を取得する .NET Standard 2.1/.NET Framework 4.7
using System;
using System.Text.RegularExpressions;

class Sample {
  static void Main()
  {
    var text = "2016-02-29";
    var pattern = @"(?<year>\d{4})-(?<month>\d{2})-(\d{2})"; // yyyy-mm-dd

    var re = new Regex(pattern);
    var m = re.Match(text);

    if (m.Success) {
      foreach (Group g in m.Groups) {
        // Nameプロパティでマッチ元となったグループ名を取得する
        Console.WriteLine($"{g.Name} => {g.Value}");
      }
      Console.WriteLine();

      // .NET Framework 4.7/.NET Standard 2.1より前のバージョンではNameプロパティが存在しないため、
      // Regex.GroupNameFromNumberメソッドを使ってグループ番号からグループ名を取得する必要がある
      for (var number = 0; number < m.Groups.Count; number++) {
        Console.WriteLine($"{re.GroupNameFromNumber(number)} => {m.Groups[number].Value}");
      }
    }
  }
}
実行結果
0 => 2016-02-29
1 => 29
year => 2016
month => 02

0 => 2016-02-29
1 => 29
year => 2016
month => 02