Freigeben über


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

Die Zeichengruppen, die mit dem Muster übereinstimmen.

Beispiele

Im folgenden Beispiel wird versucht, ein Muster für reguläre Ausdrücke mit einer Beispielzeichenfolge abzugleichen. Im Beispiel wird die Groups -Eigenschaft verwendet, um Informationen zu speichern, die von der Übereinstimmung für die Anzeige in 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 Muster für reguläre Ausdrücke kann Teilausdrücke enthalten, die definiert werden, indem ein Teil des Musters für reguläre Ausdrücke in Klammern eingeschlossen wird. Jeder solche Teilausdruck bildet eine Gruppe. Die Groups -Eigenschaft bietet Zugriff auf Informationen zu diesen Teilausdrucksüberstimmungen. Beispielsweise weist das Muster (\d{3})-(\d{3}-\d{4})für reguläre Ausdrücke , das mit nordamerikanischen Telefonnummern übereinstimmt, zwei Teilausdrücke auf. Die erste besteht aus der Vorwahl, aus der die ersten drei Ziffern der Telefonnummer bestehen. Diese Gruppe wird vom ersten Teil des regulären Ausdrucks erfasst, (\d{3}). Die zweite besteht aus der einzelnen Telefonnummer, aus der die letzten sieben Ziffern der Telefonnummer bestehen. 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 im folgenden Beispiel gezeigt.

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 einen Member verfügt. Wenn die Engine für reguläre Ausdrücke 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) auf false festgelegt, und die Group -Eigenschaft des Value Objekts wird auf String.Emptyfestgelegt. Wenn die Engine für reguläre Ausdrücke eine Übereinstimmung finden kann, enthält das erste Element des GroupCollection Objekts (das Element am Index 0), das von der Groups -Eigenschaft zurückgegeben wird, eine Zeichenfolge, die mit dem gesamten Muster für reguläre Ausdrücke übereinstimmt. Jedes nachfolgende Element stellt ab Index 1 eine erfasste Gruppe dar, wenn der reguläre Ausdruck Erfassungsgruppen enthält. Weitere Informationen finden Sie im Abschnitt "Gruppieren von Konstrukten und Objekten für reguläre Ausdrücke" des Artikels Gruppieren von Konstrukten .

Gilt für: