Regex.GetGroupNames メソッド


正規表現で使用されるキャプチャ グループ名の配列を返します。Returns an array of capturing group names for the regular expression.

 cli::array <System::String ^> ^ GetGroupNames();
public string[] GetGroupNames ();
member this.GetGroupNames : unit -> string[]
Public Function GetGroupNames () As String()



グループ名の文字列配列。A string array of group names.

次の例では、正規表現グループの名前と、一致したテキストを表示する汎用 ShowMatches メソッドを定義します。The following example defines a general-purpose ShowMatches method that displays the names of regular expression groups and their matched text.

using System;
using System.Text.RegularExpressions;

public class Example
   public static void Main()
      string pattern = @"\b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})";
      string input = "The cow jumped over the moon.";
      Regex rgx = new Regex(pattern);
      Match match = rgx.Match(input);
      if (match.Success)
         ShowMatches(rgx, match);

   private static void ShowMatches(Regex r, Match m)
      string[] names = r.GetGroupNames();
      Console.WriteLine("Named Groups:");
      foreach (var name in names) {
         Group grp = m.Groups[name];
         Console.WriteLine("   {0}: '{1}'", name, grp.Value);
// The example displays the following output:
//       Named Groups:
//          0: 'The cow jumped over the moon.'
//          1: 'the '
//          2: 'the'
//          FirstWord: 'The'
//          LastWord: 'moon'
//          Punctuation: '.'
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})"
      Dim input As String = "The cow jumped over the moon."
      Dim rgx As New Regex(pattern)
      Dim match As Match = rgx.Match(input)
      If match.Success Then ShowMatches(rgx, match)
   End Sub
   Private Sub ShowMatches(r As Regex, m As Match)
      Dim names() As String = r.GetGroupNames()
      Console.WriteLine("Named Groups:")
      For Each name In names
         Dim grp As Group = m.Groups.Item(name)
         Console.WriteLine("   {0}: '{1}'", name, grp.Value)
   End Sub
End Module
' The example displays the following output:
'       Named Groups:
'          0: 'The cow jumped over the moon.'
'          1: 'the '
'          2: 'the'
'          FirstWord: 'The'
'          LastWord: 'moon'
'          Punctuation: '.'

この場合、正規表現パターン \b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po}) は、単純な文を解析し、最初の単語、最後の単語、および末尾の区切り記号を識別するためのものです。In this case, the regular expression pattern \b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po}) is intended to parse a simple sentence, and to identify its first word, last word, and ending punctuation mark. 次の表は、正規表現パターンがどのように解釈されるかを示しています。The following table shows how the regular expression pattern is interpreted:

パターンPattern 説明Description
\b ワード境界から照合を開始します。Begin the match at a word boundary.
(?<FirstWord>\w+) 1 つ以上の単語文字に一致します。Match one or more word characters. これは FirstWord 名前付きグループです。This is the FirstWord named group.
¥?\s? 0 個または 1 個の空白文字と一致します。Match zero or one white-space characters.
(\w+)(\w+) 1 つ以上の単語文字に一致します。Match one or more word characters. これが 2 番目のキャプチャ グループです。This is the second capturing group.
\s\s 空白文字と一致します。Match a white-space character.
((\w +) \s) *((\w+)\s)* 1個以上の単語文字の後に空白が続くパターンの0回以上の繰り返しに一致します。Match zero or more occurrences of one or more word characters followed by a white space. これが最初のキャプチャ グループです。This is the first capturing group.
(?<LastWord > \w +)?(?<LastWord>\w+)? 1個以上の単語文字の0回または1回の繰り返しに一致します。Match zero or one occurrence of one or more word characters. これは LastWord 名前付きグループです。This is the LastWord named group.
(?<句読点 > \p{Po})(?<Punctuation>\p{Po}) Unicode カテゴリが句読点 (Other) である文字と一致します。Match a character whose Unicode category is Punctuation, Other. これは Punctuation 名前付きグループです。This is the Punctuation named group.


グループ名のコレクションには、式でキャプチャグループの名前を指定するために使用される文字列のセットが含まれます。The collection of group names contains the set of strings used to name capturing groups in the expression. キャプチャグループに明示的な名前が付けられていない場合でも、数値名 ("0"、"1"、"2"、"3" など) が自動的に割り当てられます。Even if capturing groups are not explicitly named, they are automatically assigned numerical names ("0", "1", "2", "3", and so on). "0" という名前付きグループは、正規表現パターンに一致したすべてのテキストを表します。The "0" named group represents all text matched by the regular expression pattern. 番号付きグループは、コレクション内の明示的な名前付きグループの前に配置され、名前付きグループは正規表現パターンで定義されている順序で表示されます。Numbered groups precede explicitly named groups in the collection, and named groups appear in the order in which they are defined in the regular expression pattern.

このメソッドによって返される配列の Length プロパティを使用して、正規表現内のグループの数を決定できます。You can use the Length property on the array returned by this method to determine the number of groups in a regular expression.