Regex.GroupNameFromNumber(Int32) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft den Gruppennamen ab, der der angegebenen Gruppennummer entspricht.
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
Die Gruppennummer, die in den entsprechenden Gruppennamen konvertiert werden soll.
Gibt zurück
Eine Zeichenfolge, die den Gruppennamen enthält, der der angegebenen Gruppennummer zugeordnet ist. Wenn kein Gruppenname vorhanden ist, der i
entspricht, gibt die Methode Empty zurück.
Beispiele
Im folgenden Beispiel wird ein Muster für reguläre Ausdrücke definiert, das einer Adresszeile entspricht, die einen US-Stadtnamen, einen Bundesstaatennamen und eine Postleitzahl enthält. Im Beispiel wird die GroupNameFromNumber -Methode verwendet, um die Namen von Erfassungsgruppen abzurufen. Anschließend werden diese Namen verwendet, um die entsprechenden erfassten Gruppen für Übereinstimmungen abzurufen.
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.
Das Muster regulärer Ausdrücke wird durch den folgenden Ausdruck definiert:
(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)
Die folgende Tabelle zeigt, wie das Muster eines regulären Ausdrucks interpretiert wird.
Muster | BESCHREIBUNG |
---|---|
(?<city>[A-Za-z\s]+) |
Entspricht einem oder mehreren Alphabet- oder Leerzeichen. Weisen Sie dieser erfassten Gruppe den Namen city zu. |
, |
Entspricht einem Komma (,) gefolgt von einem Leerzeichen. |
(?<state>[A-Za-z]{2}) |
Übereinstimmung mit zwei alphabetischen Zeichen. Weisen Sie dieser erfassten Gruppe den Namen state zu. Auf diese Gruppe sollte ein Leerzeichen folgen. |
(?<zip>\d{5}(-\d{4})?) |
Entspricht fünf numerischen Ziffern, gefolgt von null oder einem Vorkommen eines Bindestrichs gefolgt von vier Ziffern. Weisen Sie dieser erfassten Gruppe den Namen zip zu. |
Hinweise
Ein Muster für reguläre Ausdrücke kann entweder benannte oder nummerierte Erfassungsgruppen enthalten, die Teilausdrücke innerhalb einer Musterüberstimmung abgrenzen. Nummerierte Gruppen werden durch die Syntax (Teilausdruck) getrennt und erhalten Zahlen basierend auf ihrer Reihenfolge im regulären Ausdruck. Benannte Gruppen werden durch die Syntax (?<
Namen>
Teilausdruck) oder (?' name'subexpression), wobei name der Name ist, mit dem der Teilausdruck identifiziert wird. (Weitere Informationen finden Sie unter Gruppierungskonstrukte.) Die GroupNameFromNumber Methode identifiziert sowohl benannte Gruppen als auch nummerierte Gruppen anhand ihrer Ordnungspositionen im regulären Ausdruck. Ordnungsposition 0 stellt immer den gesamten regulären Ausdruck dar. Alle nummerierten Gruppen werden dann vor benannten Gruppen gezählt, unabhängig von ihrer tatsächlichen Position im Regulären Ausdrucksmuster.
Wenn i
die Nummer einer benannten Gruppe ist, gibt die Methode den Namen der Gruppe zurück. Wenn i
die Anzahl einer nicht benannten Gruppe ist, gibt die -Methode die Zeichenfolgendarstellung der Zahl zurück. Wenn i
beispielsweise 1 ist, gibt die Methode "1" zurück. Wenn i
nicht die Anzahl einer Erfassungsgruppe angegeben ist, gibt die -Methode zurück String.Empty.
Wenn eine Musterübereinstimmung gefunden wird, kann der von dieser Methode zurückgegebene Wert verwendet werden, um das Group Objekt abzurufen, das die erfasste Gruppe aus der GroupCollection.Item[] -Eigenschaft darstellt. Das GroupCollection -Objekt wird von der Match.Groups -Eigenschaft zurückgegeben.