Match.Groups Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém uma coleção de grupos correspondentes à expressão regular.
public:
virtual property System::Text::RegularExpressions::GroupCollection ^ Groups { System::Text::RegularExpressions::GroupCollection ^ get(); };
public virtual System.Text.RegularExpressions.GroupCollection Groups { get; }
member this.Groups : System.Text.RegularExpressions.GroupCollection
Public Overridable ReadOnly Property Groups As GroupCollection
Valor da propriedade
Os grupos de caracteres que correspondem ao padrão.
Exemplos
O exemplo a seguir tenta corresponder a um padrão de expressão regular com uma cadeia de caracteres de exemplo. O exemplo usa a Groups propriedade para armazenar informações recuperadas pela correspondência para exibição no console.
#using <System.dll>
using namespace System;
using namespace System::Text::RegularExpressions;
void main()
{
String^ text = "One car red car blue car";
String^ pat = "(\\w+)\\s+(car)";
// Compile the regular expression.
Regex^ r = gcnew Regex( pat,RegexOptions::IgnoreCase );
// Match the regular expression pattern against a text string.
Match^ m = r->Match(text);
int matchCount = 0;
while ( m->Success )
{
Console::WriteLine( "Match{0}", ++matchCount );
for ( int i = 1; i <= 2; i++ )
{
Group^ g = m->Groups[ i ];
Console::WriteLine( "Group{0}='{1}'", i, g );
CaptureCollection^ cc = g->Captures;
for ( int j = 0; j < cc->Count; j++ )
{
Capture^ c = cc[ j ];
System::Console::WriteLine( "Capture{0}='{1}', Position={2}", j, c, c->Index );
}
}
m = m->NextMatch();
}
}
// This example displays the following output:
// Match1
// Group1='One'
// Capture0='One', Position=0
// Group2='car'
// Capture0='car', Position=4
// Match2
// Group1='red'
// Capture0='red', Position=8
// Group2='car'
// Capture0='car', Position=12
// Match3
// Group1='blue'
// Capture0='blue', Position=16
// Group2='car'
// Capture0='car', Position=21
using System;
using System.Text.RegularExpressions;
class Example
{
static void Main()
{
string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
// Instantiate the regular expression object.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
Console.WriteLine("Match"+ (++matchCount));
for (int i = 1; i <= 2; i++)
{
Group g = m.Groups[i];
Console.WriteLine("Group"+i+"='" + g + "'");
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
}
}
m = m.NextMatch();
}
}
}
// This example displays the following output:
// Match1
// Group1='One'
// Capture0='One', Position=0
// Group2='car'
// Capture0='car', Position=4
// Match2
// Group1='red'
// Capture0='red', Position=8
// Group2='car'
// Capture0='car', Position=12
// Match3
// Group1='blue'
// Capture0='blue', Position=16
// Group2='car'
// Capture0='car', Position=21
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim text As String = "One car red car blue car"
Dim pattern As String = "(\w+)\s+(car)"
' Instantiate the regular expression object.
Dim r As Regex = new Regex(pattern, RegexOptions.IgnoreCase)
' Match the regular expression pattern against a text string.
Dim m As Match = r.Match(text)
Dim matchcount as Integer = 0
Do While m.Success
matchCount += 1
Console.WriteLine("Match" & (matchCount))
Dim i As Integer
For i = 1 to 2
Dim g as Group = m.Groups(i)
Console.WriteLine("Group" & i & "='" & g.ToString() & "'")
Dim cc As CaptureCollection = g.Captures
Dim j As Integer
For j = 0 to cc.Count - 1
Dim c As Capture = cc(j)
Console.WriteLine("Capture" & j & "='" & c.ToString() _
& "', Position=" & c.Index)
Next
Next
m = m.NextMatch()
Loop
End Sub
End Module
' This example displays the following output:
' Match1
' Group1='One'
' Capture0='One', Position=0
' Group2='car'
' Capture0='car', Position=4
' Match2
' Group1='red'
' Capture0='red', Position=8
' Group2='car'
' Capture0='car', Position=12
' Match3
' Group1='blue'
' Capture0='blue', Position=16
' Group2='car'
' Capture0='car', Position=21
Comentários
Um padrão de expressão regular pode incluir subexpressões, que são definidas colocando uma parte do padrão de expressão regular entre parênteses. Cada subexpressão desse tipo forma um grupo. A Groups propriedade fornece acesso a informações sobre essas correspondências de subexpressão. Por exemplo, o padrão (\d{3})-(\d{3}-\d{4})
de expressão regular , que corresponde aos números de telefone norte-americanos, tem duas subexpressões. O primeiro consiste no código de área, que compõe os três primeiros dígitos do número de telefone. Esse grupo é capturado pela primeira parte da expressão regular, (\d{3})
. O segundo consiste no número de telefone individual, que compõe os últimos sete dígitos do número de telefone. Esse grupo é capturado pela segunda parte da expressão regular, (\d{3}-\d{4})
. Esses dois grupos podem então ser recuperados do GroupCollection objeto retornado pela Groups propriedade , como mostra o exemplo a seguir.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(\d{3})-(\d{3}-\d{4})";
string input = "212-555-6666 906-932-1111 415-222-3333 425-888-9999";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine("Area Code: {0}", match.Groups[1].Value);
Console.WriteLine("Telephone number: {0}", match.Groups[2].Value);
Console.WriteLine();
}
Console.WriteLine();
}
}
// The example displays the following output:
// Area Code: 212
// Telephone number: 555-6666
//
// Area Code: 906
// Telephone number: 932-1111
//
// Area Code: 415
// Telephone number: 222-3333
//
// Area Code: 425
// Telephone number: 888-9999
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "(\d{3})-(\d{3}-\d{4})"
Dim input As String = "212-555-6666 906-932-1111 415-222-3333 425-888-9999"
Dim matches As MatchCollection = Regex.Matches(input, pattern)
For Each match As Match In matches
Console.WriteLine("Area Code: {0}", match.Groups(1).Value)
Console.WriteLine("Telephone number: {0}", match.Groups(2).Value)
Console.WriteLine()
Next
Console.WriteLine()
End Sub
End Module
' The example displays the following output:
' Area Code: 212
' Telephone number: 555-6666
'
' Area Code: 906
' Telephone number: 932-1111
'
' Area Code: 415
' Telephone number: 222-3333
'
' Area Code: 425
' Telephone number: 888-9999
O GroupCollection objeto retornado pela Match.Groups propriedade é um objeto de coleção baseado em zero que sempre tem pelo menos um membro. Se o mecanismo de expressão regular não encontrar nenhuma correspondência em uma cadeia de caracteres de entrada específica, a Group.Success propriedade do único Group objeto na coleção (o objeto no índice 0) será definida false
como e a Group propriedade do Value objeto será definida como String.Empty. Se o mecanismo de expressão regular puder encontrar uma correspondência, o primeiro elemento do objeto (o elemento no índice 0) retornado pela Groups propriedade conterá uma cadeia de caracteres que corresponde a todo o padrão de GroupCollection expressão regular. Cada elemento subsequente, do índice um para cima, representa um grupo capturado, se a expressão regular incluir grupos de captura. Para obter mais informações, consulte a seção "Construções de agrupamento e objetos de expressão regular" do artigo Construções de agrupamento .