正規表現要素()を用いると、正規表現をグループ化することができます。 例えば、yyyy-dd-mm形式の日付にマッチする正規表現は\d{4}-\d{2}-\d{2}と記述することができますが、この正規表現の年月日部分をそれぞれグループ化すると(\d{4})-(\d{2})-(\d{2})となります。

このようにしてグループ化した正規表現では、各グループにマッチした箇所を個別に参照することができます。 また、各グループには先頭側にあるグループから順に1から始まるインデックス(グループ番号)が割り当てられます。

グループを含む正規表現では、正規表現全体にマッチした文字列はMatchクラスによって参照することができると同時に、それぞれのグループにマッチした文字列はMatch.Groupsプロパティを通してmatch.Group[1], match.Group[2]... のようにGroupクラスの形で個別に参照することができます。

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

class Sample {
  static void Main()
  {
    var text = "2016-02-29";
    var pattern = @"(\d{4})-(\d{2})-(\d{2})"; // yyyy-mm-dd形式の日付

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

    // マッチした文字列のうち、yyyy, mm, ddのそれぞれのグループに対応する箇所を取得する
    Console.WriteLine(m.Groups[1].Value);
    Console.WriteLine(m.Groups[2].Value);
    Console.WriteLine(m.Groups[3].Value);
  }
}
実行結果
2016
02
29

また、Matchクラスと同様に、Group.Valueプロパティでグループ化した部分にマッチした文字列が参照できるほか、IndexプロパティLengthプロパティでその位置と長さを取得することができます。

グループ内にグループを記述する、つまりグループを入れ子にすることもできます。 グループが入れ子になっている場合、最も外側・先頭側にあるグループから順にグループ番号が割り当てられます。 グループ番号の割れ当て方と、入れ子になったグループの場合については.NET Frameworkで使用できる正規表現 §.グループ番号の割り振られ方を参照してください。