Match.Groups Eigenschaft

Definition

Ruft eine Auflistung der mit dem regulären Ausdruck übereinstimmenden Gruppen ab.

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

Eigenschaftswert

GroupCollection

Die Zeichengruppen, die mit dem Muster übereinstimmen.

Beispiele

Im folgenden Beispiel wird versucht, einem Muster für reguläre Ausdrücke mit einer Beispielzeichenfolge übereinzugleichen. Im Beispiel wird die Groups Eigenschaft verwendet, um Informationen zu speichern, die von der Übereinstimmung für die Anzeige auf der Konsole abgerufen werden.

#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

Hinweise

Ein reguläres Ausdrucksmuster kann Unterausdrücke enthalten, die durch Einschließen eines Teils des regulären Ausdrucksmusters in Klammern definiert werden. Jede solche Unterexpression bildet eine Gruppe. Die Groups Eigenschaft bietet Zugriff auf Informationen zu diesen Subexpression-Übereinstimmungen. Beispielsweise weist das reguläre Ausdrucksmuster (\d{3})-(\d{3}-\d{4}), das mit nordamerikanischen Telefonnummern übereinstimmt, zwei Unterausdrücke auf. Der erste besteht aus der Vorwahl, die die ersten drei Ziffern der Telefonnummer erstellt. Diese Gruppe wird vom ersten Teil des regulären Ausdrucks erfasst. (\d{3}) Die zweite besteht aus der einzelnen Telefonnummer, die die letzten sieben Ziffern der Telefonnummer erstellt. Diese Gruppe wird vom zweiten Teil des regulären Ausdrucks erfasst. (\d{3}-\d{4}) Diese beiden Gruppen können dann aus dem GroupCollection Objekt abgerufen werden, das von der Groups Eigenschaft zurückgegeben wird, wie das folgende Beispiel zeigt.

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

Das GroupCollection von der Match.Groups Eigenschaft zurückgegebene Objekt ist ein nullbasiertes Auflistungsobjekt, das immer über mindestens ein Element verfügt. Wenn das Reguläre Ausdrucksmodul keine Übereinstimmungen in einer bestimmten Eingabezeichenfolge finden kann, wird die Group.Success Eigenschaft des einzelnen Group Objekts in der Auflistung (das Objekt bei Index 0) festgelegt false , und die Group Eigenschaft des Value Objekts ist auf festgelegt String.Empty. Wenn das reguläre Ausdrucksmodul eine Übereinstimmung finden kann, enthält das erste Element des GroupCollection Objekts (das Element bei Index 0), das von der Groups Eigenschaft zurückgegeben wird, eine Zeichenfolge, die dem gesamten regulären Ausdrucksmuster entspricht. Jedes nachfolgende Element, von Index 1 nach oben, stellt eine erfasste Gruppe dar, wenn der reguläre Ausdruck die Erfassung von Gruppen enthält. Weitere Informationen finden Sie im Abschnitt "Gruppieren von Konstrukten und regulären Ausdrucksobjekten" im Artikel "Gruppieren von Konstrukten ".

Gilt für