Sdílet prostřednictvím


Regex.GroupNameFromNumber(Int32) Metoda

Definice

Získá název skupiny, který odpovídá zadanému číslu skupiny.

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

Parametry

i
Int32

Číslo skupiny, která se má převést na odpovídající název skupiny.

Návraty

Řetězec, který obsahuje název skupiny přidružené k zadanému číslu skupiny. Pokud neexistuje žádný název skupiny, který odpovídá i, vrátí Emptymetoda .

Příklady

Následující příklad definuje vzor regulárního výrazu, který odpovídá řádku adresy obsahujícímu název města, název státu a PSČ v USA. V příkladu GroupNameFromNumber se k načtení názvů zachytávání skupin používá metoda . Tyto názvy pak použije k načtení odpovídajících zachycených skupin pro shody.

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.

Vzor regulárního výrazu je definován následujícím výrazem:

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

Následující tabulka ukazuje, jak se vzor regulárního výrazu interpretuje.

Vzor Description
(?<city>[A-Za-z\s]+) Porovná jeden nebo více znaků abecedy nebo prázdných znaků. Přiřaďte této zachycené skupině název city.
, Porovná čárku (,) následovanou prázdným znakem.
(?<state>[A-Za-z]{2}) Porovná dva abecední znaky. Přiřaďte této zachycené skupině název state. Za touto skupinou by měl následovat prázdný znak.
(?<zip>\d{5}(-\d{4})?) Porovná pět číselných číslic následovaných nulovým nebo jedním výskytem spojovníku následovaných čtyřmi číslicemi. Přiřaďte této zachycené skupině název zip.

Poznámky

Vzor regulárního výrazu může obsahovat pojmenované nebo číslování zachycených skupin, které vymezí dílčí výrazy v rámci shody vzoru. Číslování skupin jsou oddělené syntaxí (dílčím výrazem) a přiřazují se jim čísla na základě jejich pořadí v regulárním výrazu. Pojmenované skupiny jsou oddělené syntaxí (?<Jméno>dílčí výraz) nebo (?) name'subexpression), kde name je název, podle kterého bude dílčí výraz identifikován. (Další informace najdete v tématu Seskupování konstruktorů.) Metoda GroupNameFromNumber identifikuje pojmenované skupiny i číslování podle jejich řadových pozic v regulárním výrazu. Ordinální pozice nula vždy představuje celý regulární výraz. Všechny čísloované skupiny se pak počítají před pojmenovanými skupinami bez ohledu na jejich skutečnou pozici ve vzoru regulárního výrazu.

Pokud i je číslo pojmenované skupiny, vrátí metoda název skupiny. Pokud i je číslo nepojmenované skupiny, vrátí metoda řetězcové vyjádření čísla. Pokud i je například 1, vrátí metoda "1". Pokud i není číslo zachytáné skupiny, vrátí String.Emptymetoda .

Pokud je nalezena shoda vzoru, lze hodnotu vrácenou touto metodou použít k načtení objektu Group , který představuje zachycenou skupinu z GroupCollection.Item[] vlastnosti . Objekt GroupCollection je vrácen vlastností Match.Groups .

Platí pro

Viz také