Regex.GroupNameFromNumber(Int32) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera nazwę grupy odpowiadającą określonej liczbie grup.
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
Numer grupy, który ma być konwertowany na odpowiednią nazwę grupy.
Zwraca
Ciąg zawierający nazwę grupy skojarzona z określonym numerem grupy. Jeśli nie ma nazwy grupy odpowiadającej metodzie i
, metoda zwraca wartość Empty.
Przykłady
W poniższym przykładzie zdefiniowano wzorzec wyrażenia regularnego, który pasuje do wiersza adresu zawierającego nazwę miasta USA, nazwę stanu i kod pocztowy. W przykładzie użyto GroupNameFromNumber metody w celu pobrania nazw przechwytujących grup. Następnie używa tych nazw do pobierania odpowiednich przechwyconych grup dla dopasowań.
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.
Wzorzec wyrażenia regularnego jest definiowany przez następujące wyrażenie:
(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)
W poniższej tabeli przedstawiono sposób interpretowania wzorca wyrażenia regularnego.
Wzorce | Opis |
---|---|
(?<city>[A-Za-z\s]+) |
Dopasuj co najmniej jeden znak alfabetyczny lub biały. Przypisz tę przechwyconą grupę jako nazwę city . |
, |
Dopasuj przecinek (,), po którym następuje znak odstępu. |
(?<state>[A-Za-z]{2}) |
Dopasuj dwa znaki alfabetyczne. Przypisz tę przechwyconą grupę jako nazwę state . Po tej grupie powinien znajdować się znak odstępu. |
(?<zip>\d{5}(-\d{4})?) |
Dopasuj pięć cyfr liczbowych, po których następuje zero lub jedno wystąpienie łącznika, po którym następują cztery cyfry. Przypisz tę przechwyconą grupę jako nazwę zip . |
Uwagi
Wzorzec wyrażenia regularnego może zawierać nazwane lub numerowane grupy przechwytywania, które delineują podwyrażenia w ramach dopasowania wzorca. Ponumerowane grupy są rozdzielane składnią (podwyrażeniem) i są przypisywane liczby na podstawie ich kolejności w wyrażeniu regularnym. Nazwane grupy są rozdzielane składnią (?<
Nazwa>
podyrażenie) lub (?") name'subexpression), gdzie nazwa jest nazwą, za pomocą której zostanie zidentyfikowane podwyrażenie. (Aby uzyskać więcej informacji, zobacz Grupowanie konstrukcji). Metoda GroupNameFromNumber identyfikuje zarówno nazwane grupy, jak i grupy numerowane według ich pozycji porządkowych w wyrażeniu regularnym. Pozycja porządkowa zero zawsze reprezentuje całe wyrażenie regularne. Wszystkie ponumerowane grupy są następnie liczone przed nazwami grupami, niezależnie od ich rzeczywistej pozycji we wzorcu wyrażenia regularnego.
Jeśli i
jest liczbą nazwanej grupy, metoda zwraca nazwę grupy. Jeśli i
jest liczbą nienazwanych grup, metoda zwraca reprezentację ciągu liczby. Na przykład jeśli i
wartość to 1, metoda zwraca wartość "1". Jeśli i
nie jest liczbą grupy przechwytywania, metoda zwraca wartość String.Empty.
Jeśli zostanie znalezione dopasowanie wzorca, wartość zwrócona przez tę metodę może służyć do pobrania Group obiektu reprezentującego przechwyconą grupę GroupCollection.Item[] z właściwości . Obiekt GroupCollection jest zwracany przez Match.Groups właściwość .