Regex.GetGroupNames Метод

Определение

Возвращает массив имен группы записи для регулярного выражения.

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

Возвращаемое значение

String[]

Строковый массив имен группы.

Примеры

В следующем примере определяется метод общего назначения ShowMatches , отображающий имена групп регулярных выражений и соответствующий текст.

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)
      Next
   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}) регулярного выражения предназначен для анализа простого предложения, а также для определения первого слова, последнего слова и конечной знак препинания. В следующей таблице показано, как интерпретируется шаблон регулярного выражения:

Шаблон Описание
\b Совпадение должно начинаться на границе слова.
(?<FirstWord>\w+) Совпадение с одним или несколькими символами слова. Это FirstWord именованной группы.
\s? Совпадение с нулем или одним символом пробела.
(\w+) Совпадение с одним или несколькими символами слова. Это вторая группа записи.
\s Соответствует пробелу.
((\w+)\s)* Соответствует нулю или нескольким вхождениям одного или нескольких символов слов, за которым следует пробел. Это первая группа записи.
(?<LastWord> \w+)? Совпадение с нулевым или одним вхождением одного или нескольких символов слова. Это LastWord именованной группы.
(?<Punctuation> \p{Po}) Соответствует символу, категория Юникода которого — знак препинания, Other. Это Punctuation именованной группы.

Комментарии

Коллекция имен групп содержит набор строк, используемых для записи групп в выражении. Даже если записи групп не именуются явным образом, они автоматически присваиваются числовые имена ("0", "1", "2", "3" и т. д.). Именованной группы "0" представляет весь текст, соответствующий шаблону регулярного выражения. Нумерованные группы предшествуют явно именованным группам в коллекции, а именованные группы отображаются в порядке, в котором они определены в шаблоне регулярного выражения.

Свойство массива, возвращаемого этим методом, можно использовать Length для определения количества групп в регулярном выражении.

Применяется к

См. также раздел