Aracılığıyla paylaş


Regex.GetGroupNumbers Yöntem

Tanım

Bir dizideki grup adlarına karşılık gelen grup numaralarını yakalama dizisi döndürür.

public:
 cli::array <int> ^ GetGroupNumbers();
public int[] GetGroupNumbers ();
member this.GetGroupNumbers : unit -> int[]
Public Function GetGroupNumbers () As Integer()

Döndürülenler

Int32[]

Grup sayılarından oluşan bir tamsayı dizisi.

Örnekler

Aşağıdaki örnek, \b((?<word>\w+)\s*)+(?<end>[.?!])bir cümleyle eşleşen normal ifadeyi tanımlar. Normal ifade üç yakalama grubu içerir: tek bir sözcüğün yanı sıra onu takip eden bir boşluk karakteri yakalayan adsız bir grup; tümcedeki sözcükleri tek tek yakalayan adlı word bir grup ve cümleyi sona erdiren noktalama işaretlerini yakalayan adlı end bir grup. Örnek, tüm yakalama gruplarının numaralarını almak için yöntemini çağırır GetGroupNumbers ve ardından yakalanan dizelerini görüntüler. Buna ek olarak, GroupNameFromNumber yöntemi belirli bir numaralandırılmış grubun adlandırılmış bir gruba karşılık geldiğini belirtmek için kullanılır.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b((?<word>\w+)\s*)+(?<end>[.?!])";
      string input = "This is a sentence. This is a second sentence.";
      
      Regex rgx = new Regex(pattern);
      int[] groupNumbers = rgx.GetGroupNumbers();
      Match m = rgx.Match(input);
      if (m.Success) {
         Console.WriteLine("Match: {0}", m.Value);
         foreach (var groupNumber in groupNumbers) {
            string name = rgx.GroupNameFromNumber(groupNumber);
            int number;
            Console.WriteLine("   Group {0}{1}: '{2}'", 
                              groupNumber, 
                              ! string.IsNullOrEmpty(name) & 
                              ! Int32.TryParse(name, out number) ?
                                 " (" + name + ")" : String.Empty, 
                              m.Groups[groupNumber].Value);
         }
      } 
   }
}
// The example displays the following output:
//       Match: This is a sentence.
//          Group 0: 'This is a sentence.'
//          Group 1: 'sentence'
//          Group 2 (word): 'sentence'
//          Group 3 (end): '.'
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String= "\b((?<word>\w+)\s*)+(?<end>[.?!])"
      Dim input As String = "This is a sentence. This is a second sentence."
      
      Dim rgx As New Regex(pattern)
      Dim groupNumbers() As Integer = rgx.GetGroupNumbers()
      Dim m As Match = rgx.Match(input)
      If m.Success Then
         Console.WriteLine("Match: {0}", m.Value)
         For Each groupNumber In groupNumbers
            Dim name As String = rgx.GroupNameFromNumber(groupNumber)
            Dim number As Integer
            Console.WriteLine("   Group {0}{1}: '{2}'", 
                              groupNumber, 
                              If(Not String.IsNullOrEmpty(name) And 
                              Not Int32.TryParse(name, number),
                                 " (" + name + ")", String.Empty), 
                              m.Groups(groupNumber).Value)
         Next
      End If 
   End Sub
End Module
' The example displays the following output:
'       Match: This is a sentence.
'          Group 0: 'This is a sentence.'
'          Group 1: 'sentence'
'          Group 2 (word): 'sentence'
'          Group 3 (end): '.'

Normal ifade deseni aşağıdaki tabloda gösterildiği gibi yorumlanır.

Desen Description
\b Bir sözcük sınırında eşleşmeye başla.
(?<word>\w+) Bir veya daha fazla sözcük karakterini eşleştirin ve eşleşen dizeleri adlı wordbir gruba atayın.
\s* Sıfır veya daha fazla boşluk karakteriyle eşleş.
((?<word>\w+)\s*) word Yakalanan grubu ve ardından yakalanan boşluk karakterlerini ilk yakalanan gruba atayın.
((?<word>\w+)\s*)+ Bir veya daha fazla sözcük karakterinin desenini ve ardından boşluk karakterlerini bir veya daha fazla kez eşleştirin.
(?<end>[.?!]) Bir nokta, soru işareti ya da ünlem işareti eşleyin. Eşleşen karakteri yakalama grubuna atayın end .

Açıklamalar

Hem adsız hem de adlandırılmış yakalama gruplarına numarayla erişilebilir. Adsız gruplar 1 ile başlayarak soldan sağa numaralandırılır. (Dizin 0'daki (sıfır) yakalama grubu eşleşmeyi bir bütün olarak temsil eder.) Adlandırılmış gruplar daha sonra, adsız yakalama gruplarının sayısından büyük bir sayı ile başlayarak soldan sağa numaralandırılır.

Bir gruba dize adı yerine numarasına göre başvurmak daha hızlı erişim sağlayabilir.

Şunlara uygulanır

Ayrıca bkz.