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
Imports System
Imports System.Text.RegularExpressions
Class Sample
Shared Sub Main()
Dim text As String = "2016-02-29"
Dim pattern As String = "(?<year>\d{4})-(?<month>\d{2})-(\d{2})" ' yyyy-mm-dd
Dim re As New Regex(pattern)
Dim m As Match = re.Match(text)
If m.Success Then
For Each g As Group In m.Groups
' Nameプロパティでマッチ元となったグループ名を取得する
Console.WriteLine($"{g.Name} => {g.Value}")
Next
Console.WriteLine()
' .NET Framework 4.7/.NET Standard 2.1より前のバージョンではNameプロパティが存在しないため、
' Regex.GroupNameFromNumberメソッドを使ってグループ番号からグループ名を取得する必要がある
For number As Integer = 0 To m.Groups.Count - 1
Console.WriteLine($"{re.GroupNameFromNumber(number)} => {m.Groups(number).Value}")
Next
End If
End Sub
End Class
実行結果
0 => 2016-02-29 1 => 29 year => 2016 month => 02 0 => 2016-02-29 1 => 29 year => 2016 month => 02