Udostępnij za pośrednictwem


Regex.GetGroupNames Metoda

Definicja

Zwraca tablicę przechwytywania nazw grup dla wyrażenia regularnego.

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

Zwraca

String[]

Tablica ciągów nazw grup.

Przykłady

W poniższym przykładzie zdefiniowano metodę ogólnego przeznaczenia ShowMatches , która wyświetla nazwy grup wyrażeń regularnych i ich dopasowany tekst.

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: '.'

W tym przypadku wzorzec \b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po}) wyrażenia regularnego jest przeznaczony do analizowania prostego zdania i identyfikowania pierwszego słowa, ostatniego słowa i końcowego znaku interpunkcyjnego. W poniższej tabeli przedstawiono sposób interpretowania wzorca wyrażenia regularnego:

Wzorce Opis
\b Rozpoczyna dopasowanie na granicy wyrazu.
(?<FirstWord>\w+) Dopasowuje co najmniej jeden znak słowa. Jest to nazwana FirstWord grupa.
\s? Dopasowanie do zera lub jednego znaku odstępu.
(\w+) Dopasowuje co najmniej jeden znak słowa. Jest to druga grupa przechwytywania.
\s Dopasowuje znak odstępu.
((\w+)\s)* Dopasuj zero lub więcej wystąpień co najmniej jednego znaku słowa, po którym następuje biały znak. Jest to pierwsza grupa przechwytywania.
(?<LastWord> \w+)? Dopasuj zero lub jedno wystąpienie co najmniej jednego znaku słowa. Jest to nazwana LastWord grupa.
(?<Punctuation> \p{Po}) Dopasuj znak, którego kategoria Unicode to Interpunkcja, Inne. Jest to nazwana Punctuation grupa.

Uwagi

Kolekcja nazw grup zawiera zestaw ciągów używanych do nazywania grup przechwytywania w wyrażeniu. Nawet jeśli przechwytywanie grup nie jest jawnie nazwane, są automatycznie przypisywane nazwy liczbowe ("0", "1", "2", "3" itd.). Nazwana grupa "0" reprezentuje cały tekst dopasowany przez wzorzec wyrażenia regularnego. Grupy numerowane poprzedzają jawnie nazwane grupy w kolekcji, a nazwane grupy są wyświetlane w kolejności, w której są zdefiniowane we wzorcu wyrażenia regularnego.

Można użyć Length właściwości w tablicy zwracanej przez tę metodę, aby określić liczbę grup w wyrażeniu regularnym.

Dotyczy

Zobacz też