Regex.GroupNameFromNumber(Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene el nombre de grupo que corresponde al número de grupo especificado.
public:
System::String ^ GroupNameFromNumber(int i);
public string GroupNameFromNumber (int i);
member this.GroupNameFromNumber : int -> string
Public Function GroupNameFromNumber (i As Integer) As String
Parámetros
- i
- Int32
Número de grupo para convertir al nombre de grupo correspondiente.
Devoluciones
Cadena que contiene el nombre de grupo asociado al número de grupo especificado. Si no hay un nombre de grupo que se corresponda con i
, el método devuelve Empty.
Ejemplos
En el ejemplo siguiente se define un patrón de expresión regular que coincide con una línea de dirección que contiene un nombre de ciudad de EE. UU., un nombre de estado y un código postal. En el ejemplo se usa el GroupNameFromNumber método para recuperar los nombres de los grupos de captura. A continuación, usa estos nombres para recuperar los grupos capturados correspondientes para las coincidencias.
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.
El patrón de expresión regular se define mediante la expresión siguiente:
(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)
En la siguiente tabla se muestra cómo se interpreta el patrón de expresión regular.
Modelo | Descripción |
---|---|
(?<city>[A-Za-z\s]+) |
Coincide con uno o varios caracteres alfabéticos o de espacio en blanco. Asigne a este grupo capturado el nombre city . |
, |
Coincide con una coma (,) seguida de un carácter de espacio en blanco. |
(?<state>[A-Za-z]{2}) |
Coincide con dos caracteres alfabéticos. Asigne a este grupo capturado el nombre state . Este grupo debe seguir un carácter de espacio en blanco. |
(?<zip>\d{5}(-\d{4})?) |
Coincide con cinco dígitos numéricos seguidos de cero o una aparición de un guión seguido de cuatro dígitos. Asigne a este grupo capturado el nombre zip . |
Comentarios
Un patrón de expresión regular puede contener grupos de captura con nombre o numerados, que delimitan subexpresiones dentro de una coincidencia de patrón. Los grupos numerados se delimitan por la sintaxis (subexpresión) y se asignan números en función de su orden en la expresión regular. Los grupos con nombre están delimitados por la sintaxis (?<
Nombre>
subexpresión) o (?' name'subexpression), donde name es el nombre por el que se identificará la subexpresión. (Para obtener más información, vea Construcciones de agrupación). El GroupNameFromNumber método identifica los grupos con nombre y los grupos numerados por sus posiciones ordinales en la expresión regular. La posición ordinal cero siempre representa toda la expresión regular. Todos los grupos numerados se cuentan antes de los grupos con nombre, independientemente de su posición real en el patrón de expresión regular.
Si i
es el número de un grupo con nombre, el método devuelve el nombre del grupo. Si i
es el número de un grupo sin nombre, el método devuelve la representación de cadena del número. Por ejemplo, si i
es 1, el método devuelve "1". Si i
no es el número de un grupo de captura, el método devuelve String.Empty.
Si se encuentra una coincidencia de patrón, el valor devuelto por este método se puede usar para recuperar el Group objeto que representa el grupo capturado de la GroupCollection.Item[] propiedad . La GroupCollection propiedad devuelve el Match.Groups objeto .