Regex.GroupNameFromNumber(Int32) Metode

Definisi

Mendapatkan nama grup yang sesuai dengan nomor grup yang ditentukan.

public:
 System::String ^ GroupNameFromNumber(int i);
public string GroupNameFromNumber (int i);
member this.GroupNameFromNumber : int -> string
Public Function GroupNameFromNumber (i As Integer) As String

Parameter

i
Int32

Nomor grup yang akan dikonversi ke nama grup yang sesuai.

Mengembalikan

String yang berisi nama grup yang terkait dengan nomor grup yang ditentukan. Jika tidak ada nama grup yang sesuai dengan i, metode mengembalikan Empty.

Contoh

Contoh berikut mendefinisikan pola ekspresi reguler yang cocok dengan baris alamat yang berisi nama kota, nama negara bagian, dan kode pos AS. Contohnya menggunakan GroupNameFromNumber metode untuk mengambil nama-nama penangkapan grup. Kemudian menggunakan nama-nama ini untuk mengambil grup yang diambil yang sesuai untuk kecocokan.

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.

Pola ekspresi reguler ditentukan oleh ekspresi berikut:

(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)

Tabel berikut menunjukkan bagaimana pola regex ditafsirkan.

Pola Deskripsi
(?<city>[A-Za-z\s]+) Cocokkan satu atau beberapa karakter alfabet atau spasi putih. Tetapkan grup yang diambil ini nama city.
, Cocokkan koma (,) diikuti dengan karakter spasi putih.
(?<state>[A-Za-z]{2}) Cocokkan dua karakter alfabet. Tetapkan grup yang diambil ini nama state. Grup ini harus diikuti oleh karakter spasi putih.
(?<zip>\d{5}(-\d{4})?) Cocokkan lima digit numerik diikuti dengan nol atau satu kemunculan tanda hubung diikuti oleh empat digit. Tetapkan grup yang diambil ini nama zip.

Keterangan

Pola ekspresi reguler mungkin berisi grup penangkapan bernama atau bernomor, yang menguraikan subekspresi dalam kecocokan pola. Grup bernomor dibatasi oleh sintaks (subekspresi) dan diberi angka berdasarkan urutannya dalam ekspresi reguler. Grup bernama dibatasi oleh sintaks (?<Nama>subekspresi) atau (?' subekspresinama), di mana nama adalah nama tempat subekspresi akan diidentifikasi. (Untuk informasi selengkapnya, lihat Konstruksi Pengelompokan.) Metode ini GroupNameFromNumber mengidentifikasi grup bernama dan grup bernomor berdasarkan posisi ordinal mereka dalam ekspresi reguler. Posisi ordinal nol selalu mewakili seluruh ekspresi reguler. Semua grup bernomor kemudian dihitung sebelum grup bernama, terlepas dari posisi aktualnya dalam pola ekspresi reguler.

Jika i adalah jumlah grup bernama, metode mengembalikan nama grup. Jika i adalah jumlah grup yang tidak disebutkan namanya, metode mengembalikan representasi string dari angka tersebut. Misalnya, jika i adalah 1, metode mengembalikan "1". Jika i bukan jumlah grup penangkapan, metode mengembalikan String.Empty.

Jika kecocokan pola ditemukan, nilai yang dikembalikan oleh metode ini kemudian dapat digunakan untuk mengambil Group objek yang mewakili grup yang diambil dari GroupCollection.Item[] properti . Objek GroupCollection dikembalikan oleh Match.Groups properti .

Berlaku untuk

Lihat juga