Regex.GroupNameFromNumber(Int32) 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.
Belirtilen grup numarasına karşılık gelen grup adını alır.
public:
System::String ^ GroupNameFromNumber(int i);
public string GroupNameFromNumber (int i);
member this.GroupNameFromNumber : int -> string
Public Function GroupNameFromNumber (i As Integer) As String
Parametreler
- i
- Int32
İlgili grup adına dönüştürülecek grup numarası.
Döndürülenler
Belirtilen grup numarasıyla ilişkili grup adını içeren bir dize. öğesine karşılık gelen i
bir grup adı yoksa yöntemi döndürür Empty.
Örnekler
Aşağıdaki örnek, ABD şehir adı, eyalet adı ve posta kodu içeren bir adres satırıyla eşleşen normal bir ifade desenini tanımlar. Örnek, yakalama gruplarının adlarını almak için yöntemini kullanır GroupNameFromNumber . Ardından, eşleşmeler için ilgili yakalanan grupları almak için bu adları kullanır.
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)";
string[] cityLines = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204",
"San Francisco, CA 94109", "Seattle, WA 98109" };
Regex rgx = new Regex(pattern);
List<string> names = new List<string>();
int ctr = 1;
bool exitFlag = false;
// Get group names.
do {
string name = rgx.GroupNameFromNumber(ctr);
if (! String.IsNullOrEmpty(name))
{
ctr++;
names.Add(name);
}
else
{
exitFlag = true;
}
} while (! exitFlag);
foreach (string cityLine in cityLines)
{
Match match = rgx.Match(cityLine);
if (match.Success)
Console.WriteLine("Zip code {0} is in {1}, {2}.",
match.Groups[names[3]],
match.Groups[names[1]],
match.Groups[names[2]]);
}
}
}
// The example displays the following output:
// Zip code 10003 is in New York, NY.
// Zip code 11238 is in Brooklyn, NY.
// Zip code 48204 is in Detroit, MI.
// Zip code 94109 is in San Francisco, CA.
// Zip code 98109 is in Seattle, WA.
Imports System.Collections.Generic
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)"
Dim cityLines() As String = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204", _
"San Francisco, CA 94109", "Seattle, WA 98109" }
Dim rgx As New Regex(pattern)
Dim names As New List(Of String)
Dim ctr As Integer = 1
Dim exitFlag As Boolean = False
' Get group names.
Do
Dim name As String = rgx.GroupNameFromNumber(ctr)
If Not String.IsNullOrEmpty(name) Then
ctr += 1
names.Add(name)
Else
exitFlag = True
End If
Loop While Not exitFlag
For Each cityLine As String In cityLines
Dim match As Match = rgx.Match(cityLine)
If match.Success Then
Console.WriteLine("Zip code {0} is in {1}, {2}.", _
match.Groups.Item(names.Item(3)), _
match.Groups.Item(names.Item(1)), _
match.Groups.Item(names.Item(2)))
End If
Next
End Sub
End Module
' The example displays the following output:
' Zip code 10003 is in New York, NY.
' Zip code 11238 is in Brooklyn, NY.
' Zip code 48204 is in Detroit, MI.
' Zip code 94109 is in San Francisco, CA.
' Zip code 98109 is in Seattle, WA.
Normal ifade deseni aşağıdaki ifadeyle tanımlanır:
(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)
Aşağıdaki tabloda normal ifade deseninin nasıl yorumlandığı gösterilmektedir.
Desen | Description |
---|---|
(?<city>[A-Za-z\s]+) |
Bir veya daha fazla alfabetik veya boşluk karakterini eşleştirin. Yakalanan bu gruba adını city atayın. |
, |
Virgülle (,) ve ardından boşluk karakteriyle eşleştirin. |
(?<state>[A-Za-z]{2}) |
İki alfabetik karakteri eşleştirin. Yakalanan bu gruba adını state atayın. Bu grubu bir boşluk karakteri takip etmelidir. |
(?<zip>\d{5}(-\d{4})?) |
Beş sayısal basamağı eşleştirin ve ardından bir kısa çizginin sıfır veya bir tekrarını ve ardından dört basamak ekleyin. Yakalanan bu gruba adını zip atayın. |
Açıklamalar
Normal ifade deseni, bir desen eşleşmesi içindeki alt ifadeleri gösteren adlandırılmış veya numaralandırılmış yakalama grupları içerebilir. Numaralandırılmış gruplar söz dizimi (alt ifade) ile sınırlandırılır ve normal ifadedeki sıralarına göre sayılar atanır. Adlandırılmış gruplar söz dizimi (?<
Adı>
alt ifade) veya (?' name'subexpression), burada ad, alt ifadenin tanımlandığı addır. (Daha fazla bilgi için bkz. Gruplandırma Yapıları.) yöntemi, GroupNameFromNumber hem adlandırılmış grupları hem de numaralandırılmış grupları normal ifadedeki sıralı konumlarına göre tanımlar. Sıralı konum sıfır her zaman normal ifadenin tamamını temsil eder. Ardından, normal ifade desenindeki gerçek konumlarından bağımsız olarak, tüm numaralandırılmış gruplar adlandırılmış gruplardan önce sayılır.
Adlandırılmış bir grubun sayısıysa i
, yöntemi grubun adını döndürür. Adsız bir grubun sayısıysa i
, yöntemi sayının dize gösterimini döndürür. Örneğin, 1 ise i
, yöntem "1" döndürür.
i
Yakalama grubunun sayısı değilse, yöntemi döndürürString.Empty.
Bir desen eşleşmesi bulunursa, bu yöntem tarafından döndürülen değer, yakalanan grubu özelliğinden GroupCollection.Item[] temsil eden nesneyi almak Group için kullanılabilir. GroupCollection nesnesi özelliği tarafından Match.Groups döndürülür.