Regex.GroupNameFromNumber(Int32) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 .