正規表現要素(?<name>)を使うと、正規表現のグループ化と同時に名前を与えることができます。 グループに名前を与えることにより、正規表現の構造を把握しやすくすることができ、またグループを参照するコードの可読性を向上させることができます。 例えば正規表現\d{4}にグループ名nameを与える場合は(?<name>\d{4})と記述します。

Match.Groupsプロパティから名前付きグループを参照する場合は、match.Groups["name"]のように、インデックスの代わりにグループ名を文字列で指定します。

グループ名が与えられている場合でも、インデックスを使って個々のグループを参照することもできます。 各グループは、名前付きかどうかによらず、常に同じ順序でグループ番号が割り当てられます。 (.NET Frameworkで使用できる正規表現 §.グループ番号の割り振られ方)

Match.Groupsプロパティと名前付きグループを使ってyyyy-mm-dd形式にマッチする文字列の年月日をそれぞれ取得する
using System;
using System.Text.RegularExpressions;

class Sample {
  static void Main()
  {
    var text = "2016-02-29";
    var pattern = @"(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})"; // yyyy-mm-dd形式の日付
    //var pattern = @"(\d{4})-(\d{2})-(\d{2})"; // 上記と同等の正規表現をグループ名なしで記述した場合

    var m = Regex.Match(text, pattern);

    // マッチした文字列のうち、グループ名'y', 'm', 'd'のそれぞれに対応する箇所を取得する
    Console.WriteLine(m.Groups["y"].Value);
    Console.WriteLine(m.Groups["m"].Value);
    Console.WriteLine(m.Groups["d"].Value);
    Console.WriteLine();

    // グループ名を与えている場合でも、各グループをインデックス(グループ番号)で参照することもできる
    Console.WriteLine(m.Groups[1].Value);
    Console.WriteLine(m.Groups[2].Value);
    Console.WriteLine(m.Groups[3].Value);
  }
}
実行結果
2016
02
29

2016
02
29