Regex.GetGroupNumbers Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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ı word bir 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.