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

このようにグループ化した正規表現では、各グループにマッチした箇所を個別に参照することができます。 例えば正規表現"(\d{4})-(\d{2})-(\d{2})"の場合、この正規表現全体にマッチした文字列はMatchクラスによって参照することができますが、それとは別にそれぞれのグループ(この例では(\d{4}),(\d{2}),(\d{2})の各部分)にマッチした文字列はMatch.Groupsプロパティを通してGroupクラスの形で個別に参照することができます。

また、各グループには先頭側にあるグループから順に1から始まるインデックス(グループ番号)が割り当てられます。 各グループにマッチした箇所を参照するには、match.Group[1],match.Group[2]のようにします。

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

Class Sample
  Shared Sub Main()
    Dim text As String = "2016-02-29"
    Dim pattern As String = "(\d{4})-(\d{2})-(\d{2})" ' yyyy-mm-dd形式の日付

    Dim m As Match = 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)
  End Sub
End Class
実行結果
2016
02
29

Matchクラスと同様に、Groupクラスもグループ化された正規表現にマッチした文字列とその位置・長さを表すValue, Index, Lengthの各プロパティを持っています。

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