Aracılığıyla paylaş


Regex.GroupNameFromNumber(Int32) Yöntem

Tanım

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 ibir 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ı cityatayı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ı stateatayı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ı zipatayı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.

Şunlara uygulanır

Ayrıca bkz.