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

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

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

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 = "(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})" ' yyyy-mm-dd形式の日付
    'Dim pattern As String = "(\d{4})-(\d{2})-(\d{2})" ' 上記と同等の正規表現をグループ名なしで記述した場合

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

2016
02
29