Regex.GetGroupNumbers 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í.
Devuelve una matriz de números de grupo de captura que corresponde a los nombres de grupo en una matriz.
public:
cli::array <int> ^ GetGroupNumbers();
public int[] GetGroupNumbers ();
member this.GetGroupNumbers : unit -> int[]
Public Function GetGroupNumbers () As Integer()
Devoluciones
- Int32[]
Matriz de enteros de números de grupo.
Ejemplos
En el ejemplo siguiente se define una expresión regular, \b((?<word>\w+)\s*)+(?<end>[.?!])
, que coincide con una oración. La expresión regular incluye tres grupos de captura: un grupo sin nombre que captura una palabra individual junto con un carácter de espacio que puede seguirlo; un grupo denominado word
que captura las palabras individuales de la oración; y un grupo denominado end
que captura la puntuación que termina la oración. En el ejemplo se llama al GetGroupNumbers método para obtener los números de todos los grupos de captura y, a continuación, se muestra su cadena capturada. Además, el GroupNameFromNumber método se usa para indicar si un grupo numerado determinado corresponde a un grupo con nombre.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b((?<word>\w+)\s*)+(?<end>[.?!])";
string input = "This is a sentence. This is a second sentence.";
Regex rgx = new Regex(pattern);
int[] groupNumbers = rgx.GetGroupNumbers();
Match m = rgx.Match(input);
if (m.Success) {
Console.WriteLine("Match: {0}", m.Value);
foreach (var groupNumber in groupNumbers) {
string name = rgx.GroupNameFromNumber(groupNumber);
int number;
Console.WriteLine(" Group {0}{1}: '{2}'",
groupNumber,
! string.IsNullOrEmpty(name) &
! Int32.TryParse(name, out number) ?
" (" + name + ")" : String.Empty,
m.Groups[groupNumber].Value);
}
}
}
}
// The example displays the following output:
// Match: This is a sentence.
// Group 0: 'This is a sentence.'
// Group 1: 'sentence'
// Group 2 (word): 'sentence'
// Group 3 (end): '.'
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String= "\b((?<word>\w+)\s*)+(?<end>[.?!])"
Dim input As String = "This is a sentence. This is a second sentence."
Dim rgx As New Regex(pattern)
Dim groupNumbers() As Integer = rgx.GetGroupNumbers()
Dim m As Match = rgx.Match(input)
If m.Success Then
Console.WriteLine("Match: {0}", m.Value)
For Each groupNumber In groupNumbers
Dim name As String = rgx.GroupNameFromNumber(groupNumber)
Dim number As Integer
Console.WriteLine(" Group {0}{1}: '{2}'",
groupNumber,
If(Not String.IsNullOrEmpty(name) And
Not Int32.TryParse(name, number),
" (" + name + ")", String.Empty),
m.Groups(groupNumber).Value)
Next
End If
End Sub
End Module
' The example displays the following output:
' Match: This is a sentence.
' Group 0: 'This is a sentence.'
' Group 1: 'sentence'
' Group 2 (word): 'sentence'
' Group 3 (end): '.'
El patrón de la expresión regular se interpreta como se muestra en la tabla siguiente.
Modelo | Descripción |
---|---|
\b |
Iniciar la búsqueda de coincidencias en un límite de palabras. |
(?<word>\w+) |
Coincide con uno o varios caracteres de palabra y asigna las cadenas coincidentes a un grupo denominado word . |
\s* |
Busca coincidencias con cero o más caracteres de espacio en blanco. |
((?<word>\w+)\s*) |
Asigne el word grupo capturado seguido de los caracteres de espacio en blanco capturados al primer grupo capturado. |
((?<word>\w+)\s*)+ |
Coincide con el patrón de uno o varios caracteres de palabra seguidos de los caracteres de espacio en blanco una o varias veces. |
(?<end>[.?!]) |
Buscar coincidencias con un punto, un signo de interrogación o un signo de exclamación. Asigne el carácter coincidente al end grupo de captura. |
Comentarios
Se puede acceder a los grupos de captura sin nombre y con nombre por número. Los grupos sin nombre se numeran de izquierda a derecha a partir de 1. (El grupo de captura del índice 0 (cero) representa la coincidencia en su conjunto). A continuación, los grupos con nombre se numeran de izquierda a derecha a partir de un número que es uno mayor que el número de grupos de captura sin nombre.
Hacer referencia a un grupo por su número en lugar de por nombre de cadena puede proporcionar acceso más rápido.