Group.Captures Propiedad
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 una colección de todas las capturas que coinciden con el grupo de captura, en orden empezando por el más interno de la izquierda (o por el más interno de la derecha si se modifica con la opción RightToLeft). La colección puede tener cero o más elementos.
public:
property System::Text::RegularExpressions::CaptureCollection ^ Captures { System::Text::RegularExpressions::CaptureCollection ^ get(); };
public System.Text.RegularExpressions.CaptureCollection Captures { get; }
member this.Captures : System.Text.RegularExpressions.CaptureCollection
Public ReadOnly Property Captures As CaptureCollection
Valor de propiedad
Colección de subcadenas que coinciden por el grupo.
Comentarios
Si un cuantificador no se aplica a un grupo de captura, la colección devuelta por la Captures propiedad contiene un único Capture objeto que proporciona información sobre la misma subcadena que el Group objeto. Esto se muestra en el ejemplo siguiente. Define una expresión regular, \b(\w+)\b
, que extrae una sola palabra de una oración. El Group objeto captura la palabra "This" y el único objeto de contiene CaptureCollection información sobre la misma captura.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b(\w+)\b";
string input = "This is one sentence.";
Match match = Regex.Match(input, pattern);
if (match.Success) {
Console.WriteLine("Matched text: {0}", match.Value);
for (int ctr = 1; ctr <= match.Groups.Count - 1; ctr++) {
Console.WriteLine(" Group {0}: {1}", ctr, match.Groups[ctr].Value);
int captureCtr = 0;
foreach (Capture capture in match.Groups[ctr].Captures) {
Console.WriteLine(" Capture {0}: {1}",
captureCtr, capture.Value);
captureCtr += 1;
}
}
}
}
}
// The example displays the following output:
// Matched text: This
// Group 1: This
// Capture 0: This
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b(\w+)\b"
Dim input As String = "This is one sentence."
Dim match As Match = Regex.Match(input, pattern)
If match.Success Then
Console.WriteLine("Matched text: {0}", match.Value)
For ctr As Integer = 1 To match.Groups.Count - 1
Console.WriteLine(" Group {0}: {1}", ctr, match.Groups(ctr).Value)
Dim captureCtr As Integer = 0
For Each capture As Capture In match.Groups(ctr).Captures
Console.WriteLine(" Capture {0}: {1}", _
captureCtr, capture.Value)
captureCtr += 1
Next
Next
End If
End Sub
End Module
' The example displays the following output:
' Matched text: This
' Group 1: This
' Capture 0: This
La utilidad real de la Captures propiedad se produce cuando se aplica un cuantificador a un grupo de captura para que el grupo capture varias subcadenas en una sola expresión regular. En este caso, el Group objeto contiene información sobre la última subcadena capturada, mientras que la Captures propiedad contiene información sobre todas las subcadenas capturadas por el grupo. En el ejemplo siguiente, la expresión \b(\w+\s*)+\.
regular coincide con una oración completa que termina en un punto. El grupo (\w+\s*)+
captura las palabras individuales de la colección. Dado que la Group colección contiene información solo sobre la última subcadena capturada, captura la última palabra de la frase , "sentence". Sin embargo, cada palabra capturada por el grupo está disponible en la colección devuelta por la Captures propiedad .
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "This is a sentence. This is another sentence.";
string pattern = @"\b(\w+\s*)+\.";
Match match = Regex.Match(input, pattern);
if (match.Success) {
Console.WriteLine("Matched text: {0}", match.Value);
for (int ctr = 1; ctr < match.Groups.Count; ctr++) {
Console.WriteLine(" Group {0}: {1}", ctr, match.Groups[ctr].Value);
int captureCtr = 0;
foreach (Capture capture in match.Groups[ctr].Captures) {
Console.WriteLine(" Capture {0}: {1}",
captureCtr, capture.Value);
captureCtr++;
}
}
}
}
}
// The example displays the following output:
// Matched text: This is a sentence.
// Group 1: sentence
// Capture 0: This
// Capture 1: is
// Capture 2: a
// Capture 3: sentence
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "This is a sentence. This is another sentence."
Dim pattern As String = "\b(\w+\s*)+\."
Dim match As Match = Regex.Match(input, pattern)
If match.Success Then
Console.WriteLine("Matched text: {0}", match.Value)
For ctr As Integer = 1 To match.Groups.Count - 1
Console.WriteLine(" Group {0}: {1}", ctr, match.Groups(ctr).Value)
Dim captureCtr As Integer = 0
For Each capture As Capture In match.Groups(ctr).Captures
Console.WriteLine(" Capture {0}: {1}", _
captureCtr, capture.Value)
captureCtr += 1
Next
Next
End If
End Sub
End Module
' The example displays the following output:
' Matched text: This is a sentence.
' Group 1: sentence
' Capture 0: This
' Capture 1: is
' Capture 2: a
' Capture 3: sentence