Regex.GetGroupNames Yöntem

Tanım

Normal ifade için grup adlarını yakalama dizisi döndürür.

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

Döndürülenler

String[]

Grup adlarından oluşan bir dize dizisi.

Örnekler

Aşağıdaki örnek, normal ifade gruplarının adlarını ve eşleşen metinlerini görüntüleyen genel amaçlı ShowMatches bir yöntem tanımlar.

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

Bu durumda, normal ifade deseninin \b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po}) basit bir cümleyi ayrıştırması ve ilk sözcüğü, son sözcüğü ve bitiş noktalama işaretlerini tanımlaması amaçlanmıştır. Aşağıdaki tabloda normal ifade deseninin nasıl yorumlandığı gösterilmektedir:

Desen Description
\b Bir sözcük sınırında eşleşmeye başla.
(?<FirstWord>\w+) Bir veya daha fazla sözcük karakteri eşleştir. Bu adlandırılmış grup.FirstWord
\s? Sıfır veya bir beyaz boşluk karakterini eşleştirin.
(\w+) Bir veya daha fazla sözcük karakteri eşleştir. Bu ikinci yakalama grubudur.
\s Bir boşluk karakteri ile eşleştirin.
((\w+)\s)* Bir veya daha fazla sözcük karakterinin sıfır veya daha fazla örneğini ve ardından boşluk ekleyin. Bu ilk yakalama grubudur.
(?<LastWord> \w+)? Bir veya daha fazla sözcük karakterinin sıfır veya bir oluşumunu eşleştirin. Bu adlandırılmış grup.LastWord
(?<Punctuation> \p{Po}) Unicode kategorisi Noktalama, Diğer olan bir karakteri eşleştirin. Bu adlandırılmış grup.Punctuation

Açıklamalar

Grup adları koleksiyonu, ifadedeki yakalama gruplarını adlandırmak için kullanılan dize kümesini içerir. Yakalama grupları açıkça adlandırılmasa bile, bunlara otomatik olarak sayısal adlar ("0", "1", "2", "3" vb.) atanır. "0" adlı grup, normal ifade deseni ile eşleşen tüm metni temsil eder. Numaralandırılmış gruplar koleksiyondaki açıkça adlandırılmış grupların önüne gelir ve adlandırılmış gruplar normal ifade deseninde tanımlanma sıralarında görünür.

Normal ifadedeki grup sayısını belirlemek için bu yöntem tarafından döndürülen dizide özelliğini kullanabilirsiniz Length .

Şunlara uygulanır

Ayrıca bkz.