Match Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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, Match má Groups 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#) neboFor 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) |