Sdílet prostřednictvím


Match Třída

Definice

Představuje výsledky z jedné shody regulárního výrazu.

public ref class Match : System::Text::RegularExpressions::Group
public class Match : System.Text.RegularExpressions.Group
[System.Serializable]
public class Match : System.Text.RegularExpressions.Group
type Match = class
    inherit Group
[<System.Serializable>]
type Match = class
    inherit Group
Public Class Match
Inherits Group
Dědičnost
Atributy

Příklady

Následující příklady používají regulární výraz Console\.Write(Line)?. Regulární výraz se interpretuje takto:

Konzola\. Zápis Odpovídá řetězci Console.Write. Všimněte si, že znak "" je řídicí znak, aby byl interpretován jako literální tečka, nikoli jako zástupný znak, který odpovídá jakémukoli znaku.
(Čára)? Porovná nulu nebo jeden výskyt řetězce "Řádek".

Příklad 1

Následující příklad volá metodu Regex.Matches(String, String) pro načtení všech vzorů shody ve vstupním řetězci. Poté iteruje Match objekty ve vráceném MatchCollection objektu tak, aby zobrazovaly informace o každé shodě.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "int[] values = { 1, 2, 3 };\n" +
                     "for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
                     "{\n" +
                     "   Console.Write(values[ctr]);\n" +
                     "   if (ctr < values.GetUpperBound(1))\n" +
                     "      Console.Write(\", \");\n" +
                     "}\n" +
                     "Console.WriteLine();\n";   
      
      string pattern = @"Console\.Write(Line)?";
      MatchCollection matches = Regex.Matches(input, pattern);
      foreach (Match match in matches)
         Console.WriteLine("'{0}' found in the source code at position {1}.",  
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//    'Console.Write' found in the source code at position 112.
//    'Console.Write' found in the source code at position 184.
//    'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
                            "For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
                            "   Console.Write(values(ctr))" & vbCrLf & _
                            "   If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
                            "Next" & vbCrLf & _
                            "Console.WriteLine()"   
      Dim pattern As String = "Console\.Write(Line)?"
      Dim matches As MatchCollection = Regex.Matches(input, pattern)
      For Each match As Match In matches
         Console.WriteLine("'{0}' found in the source code at position {1}.", _ 
                           match.Value, match.Index)       
      Next                            
   End Sub
End Module
' The example displays the following output:
'    'Console.Write' found in the source code at position 115.
'    'Console.Write' found in the source code at position 184.
'    'Console.WriteLine' found in the source code at position 211.

Příklad 2

Následující příklad volá metody Match(String, String) a NextMatch metody pro načtení jedné shody najednou.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "int[] values = { 1, 2, 3 };\n" +
                     "for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
                     "{\n" +
                     "   Console.Write(values[ctr]);\n" +
                     "   if (ctr < values.GetUpperBound(1))\n" +
                     "      Console.Write(\", \");\n" +
                     "}\n" +
                     "Console.WriteLine();\n";   
      string pattern = @"Console\.Write(Line)?";
      Match match = Regex.Match(input, pattern);
      while (match.Success)
      {
         Console.WriteLine("'{0}' found in the source code at position {1}.",  
                           match.Value, match.Index);
         match = match.NextMatch();
      }
   }
}
// The example displays the following output:
//    'Console.Write' found in the source code at position 112.
//    'Console.Write' found in the source code at position 184.
//    'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
                            "For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
                            "   Console.Write(values(ctr))" & vbCrLf & _
                            "   If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
                            "Next" & vbCrLf & _
                            "Console.WriteLine()"   
      Dim pattern As String = "Console\.Write(Line)?"
      Dim match As Match = Regex.Match(input, pattern)
      Do While match.Success
         Console.WriteLine("'{0}' found in the source code at position {1}.", _ 
                           match.Value, match.Index)
         match = match.NextMatch()                  
      Loop                            
   End Sub
End Module
' The example displays the following output:
'    'Console.Write' found in the source code at position 115.
'    'Console.Write' found in the source code at position 184.
'    'Console.WriteLine' found in the source code at position 211.

Poznámky

Objekt Match je neměnný a nemá žádný veřejný konstruktor. Instance Match třídy je vrácena metodou Regex.Match a představuje první vzor shodu v řetězci. Následné shody jsou reprezentovány Match objekty vrácenými metodou Match.NextMatch . Kromě toho objekt, MatchCollection který se skládá z nuly, jednoho nebo více Match objektů, je vrácen metodou Regex.Matches .

Pokud metoda Regex.Matches neodpovídá vzoru regulárního výrazu ve vstupním řetězci, vrátí prázdný MatchCollection objekt. K iteraci kolekce pak můžete použít foreach konstruktor v jazyce C# nebo For Each konstruktor v Visual Basic.

Pokud metoda Regex.Match neodpovídá vzoru regulárního výrazu, vrátí Match objekt, který je roven Match.Empty. Pomocí této vlastnosti můžete Success určit, jestli byla shoda úspěšná. V následujícím příkladu je uvedena ukázka.

// Search for a pattern that is not found in the input string.
string pattern = "dog";
string input = "The cat saw the other cats playing in the back yard.";
Match match = Regex.Match(input, pattern);
if (match.Success )
   // Report position as a one-based integer.
   Console.WriteLine("'{0}' was found at position {1} in '{2}'.", 
                     match.Value, match.Index + 1, input);
else
   Console.WriteLine("The pattern '{0}' was not found in '{1}'.",
                     pattern, input);
' Search for a pattern that is not found in the input string.
Dim pattern As String = "dog"
Dim input As String = "The cat saw the other cats playing in the back yard."
Dim match As Match = Regex.Match(input, pattern)
If match.Success Then
   ' Report position as a one-based integer.
   Console.WriteLine("'{0}' was found at position {1} in '{2}'.", _ 
                     match.Value, match.Index + 1, input)
Else
   Console.WriteLine("The pattern '{0}' was not found in '{1}'.", _
                     pattern, input)
End If

Pokud je shoda vzoru úspěšná, Value vlastnost obsahuje odpovídající podřetězce, Index vlastnost indikuje nulovou počáteční pozici odpovídající podřetězce ve vstupním řetězci a Length vlastnost označuje délku odpovídajícího podřetězce ve vstupním řetězci.

Vzhledem k tomu, že jedna shoda může zahrnovat více zachytávání skupin, MatchGroups vlastnost, která vrátí GroupCollectionhodnotu . Samotná Match instance je ekvivalentní prvnímu objektu v kolekci( Match.Groups[0]``Match.Groups(0) v Visual Basic), který představuje celou shodu. K zachyceným skupinám můžete přistupovat následujícími způsoby:

  • Členy objektu GroupCollection můžete iterovat pomocí konstruktoru foreach (C#) nebo For Each (Visual Basic).

  • Pomocí vlastnosti můžete GroupCollection.Item[Int32] načíst skupiny podle počtu zachytávaných skupin. Všimněte si, že pomocí volání metody instance Regex.GetGroupNumbers můžete určit, které číslované skupiny existují v regulárním výrazu.

  • Vlastnost můžete použít GroupCollection.Item[String] k načtení skupin podle názvu zachytávání skupiny. Všimněte si, že můžete určit, které pojmenované skupiny existují v regulárním výrazu voláním metody instance Regex.GetGroupNames() .

Vlastnosti

Captures

Získá kolekci všech zachytávání odpovídajících skupině zachytávání, v nejobsáhnějším pořadí úplně vlevo (nebo v pořadí úplně vpravo úplně vpravo, pokud je regulární výraz upraven pomocí RightToLeft možnosti). Kolekce může obsahovat nula nebo více položek.

(Zděděno od Group)
Empty

Získá prázdnou skupinu. Všechny neúspěšné shody vrátí tuto prázdnou shodu.

Groups

Získá kolekci skupin, které odpovídají regulárnímu výrazu.

Index

Pozice v původním řetězci, kde je nalezen první znak zachyceného podřetězce.

(Zděděno od Capture)
Length

Získá délku zachyceného podřetětce.

(Zděděno od Capture)
Name

Vrátí název zachytávání skupiny reprezentované aktuální instancí.

(Zděděno od Group)
Success

Získá hodnotu určující, zda je shoda úspěšná.

(Zděděno od Group)
Value

Získá zachycený podřetězce ze vstupního řetězce.

(Zděděno od Capture)
ValueSpan

Získá zachycené rozpětí ze vstupního řetězce.

(Zděděno od Capture)

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
NextMatch()

Vrátí nový Match objekt s výsledky pro další shodu počínaje pozicí, na které poslední shoda skončila (na znaku za posledním odpovídajícím znakem).

Result(String)

Vrátí rozšíření zadaného vzoru nahrazení.

Synchronized(Match)

Match Vrátí instanci ekvivalentní zadané instanci, která je vhodná ke sdílení mezi více vlákny.

ToString()

Načte zachycený podřetězce ze vstupního řetězce voláním Value vlastnosti.

(Zděděno od Capture)

Platí pro

Viz také