Match.Groups Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene una raccolta di gruppi corrispondenti all'espressione regolare.
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
Valore della proprietà
Gruppi di caratteri corrispondenti al criterio.
Esempio
L'esempio seguente tenta di trovare una corrispondenza con un criterio di espressione regolare rispetto a una stringa di esempio. Nell'esempio viene utilizzata la Groups proprietà per archiviare le informazioni recuperate dalla corrispondenza per la visualizzazione nella console.
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
Commenti
Un criterio di espressione regolare può includere sottoespressioni, definite racchiudendo una parte del criterio di espressione regolare tra parentesi. Ogni sottoespressione di questo tipo costituisce un gruppo. La Groups proprietà fornisce l'accesso alle informazioni su tali corrispondenze di sottoespressione. Ad esempio, il criterio (\d{3})-(\d{3}-\d{4})di espressione regolare , che corrisponde ai numeri di telefono nordamericani, ha due sottoespressioni. Il primo è costituito dal codice di area, che compone le prime tre cifre del numero di telefono. Questo gruppo viene acquisito dalla prima parte dell'espressione regolare, (\d{3}). Il secondo è costituito dal singolo numero di telefono, che compone le ultime sette cifre del numero di telefono. Questo gruppo viene acquisito dalla seconda parte dell'espressione regolare, (\d{3}-\d{4}). Questi due gruppi possono quindi essere recuperati dall'oggetto GroupCollection restituito dalla Groups proprietà , come illustrato nell'esempio seguente.
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
L'oggetto GroupCollectionMatch.Groups restituito dalla proprietà è un oggetto insieme in base zero che ha sempre almeno un membro. Se il motore delle espressioni regolari non riesce a trovare corrispondenze in una determinata stringa di input, la Group.Success proprietà del singolo Group oggetto nell'insieme (l'oggetto in corrispondenza dell'indice 0) viene impostata false su e la Group proprietà dell'oggetto Value è impostata su String.Empty. Se il motore delle espressioni regolari riesce a trovare una corrispondenza, il primo elemento dell'oggetto GroupCollection (l'elemento in corrispondenza dell'indice 0) restituito dalla Groups proprietà contiene una stringa che corrisponde all'intero criterio di espressione regolare. Ogni elemento successivo, dall'indice 1 verso l'alto, rappresenta un gruppo acquisito, se l'espressione regolare include gruppi di acquisizione. Per altre informazioni, vedere la sezione "Costrutti di raggruppamento e oggetti di espressioni regolari" dell'articolo Costrutti di raggruppamento .