Match Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje wyniki z jednego dopasowania wyrażenia regularnego.
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
- Dziedziczenie
- Atrybuty
Przykłady
W poniższych przykładach użyto wyrażenia Console\.Write(Line)?
regularnego . Wyrażenie regularne jest interpretowane w następujący sposób:
Konsola\. Napisz | Dopasuj ciąg "Console.Write". Należy pamiętać, że znak "." jest ucieczki, tak aby był interpretowany jako kropka literału, a nie jako symbol wieloznaczny, który pasuje do dowolnego znaku. |
(Linia)? | Dopasuj zero lub jedno wystąpienie ciągu "Line". |
Przykład 1
Poniższy przykład wywołuje metodę , Regex.Matches(String, String) aby pobrać wszystkie dopasowania wzorca w ciągu wejściowym. Następnie iteruje Match obiekty w zwróconym MatchCollection obiekcie, aby wyświetlić informacje o każdym dopasowaniu.
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.
Przykład 2
Poniższy przykład wywołuje Match(String, String) metody i NextMatch w celu pobrania jednego dopasowania naraz.
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.
Uwagi
Obiekt Match jest niezmienny i nie ma publicznego konstruktora. Wystąpienie Match klasy jest zwracane przez metodę Regex.Match i reprezentuje pierwsze dopasowanie wzorca w ciągu. Kolejne dopasowania są reprezentowane przez Match obiekty zwracane przez metodę Match.NextMatch . Ponadto MatchCollection metoda zwraca Regex.Matches obiekt składający się z zera, co najmniej Match jednego obiektu.
Regex.Matches Jeśli metoda nie pasuje do wzorca wyrażenia regularnego w ciągu wejściowym, zwraca pusty MatchCollection obiekt. Następnie można użyć foreach
konstrukcji w języku C# lub For Each
konstrukcji w Visual Basic w celu iteracji kolekcji.
Regex.Match Jeśli metoda nie pasuje do wzorca wyrażenia regularnego, zwraca Match obiekt, który jest równy Match.Empty. Możesz użyć Success właściwości , aby określić, czy dopasowanie zakończyło się pomyślnie. Poniższy przykład stanowi ilustrację.
// 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
Jeśli dopasowanie wzorca powiedzie się, Value właściwość zawiera dopasowany podciąg, Index właściwość wskazuje pozycję początkową opartą na zera dopasowanego podciągu w ciągu wejściowym, a Length właściwość wskazuje długość dopasowanego podciągu w ciągu wejściowym.
Ponieważ pojedyncze dopasowanie może obejmować wiele grup przechwytywania, Match ma właściwość zwracającą Groups wartość GroupCollection. Samo Match wystąpienie jest równoważne pierwszemu obiektowi w kolekcji Match.Groups[0]
(Match.Groups(0)
w Visual Basic), który reprezentuje całe dopasowanie. Dostęp do przechwyconych grup można uzyskać w dopasowaniu w następujący sposób:
Elementy członkowskie GroupCollection obiektu można iterować przy użyciu
foreach
konstrukcji (C#) lubFor Each
(Visual Basic).Możesz użyć GroupCollection.Item[Int32] właściwości , aby pobrać grupy według liczby przechwytujących grup. Należy pamiętać, że można określić, które grupy numerowane znajdują się w wyrażeniu regularnym, wywołując metodę wystąpienia Regex.GetGroupNumbers .
Możesz użyć GroupCollection.Item[String] właściwości , aby pobrać grupy według nazwy grupy przechwytywania. Należy pamiętać, że możesz określić, które nazwane grupy znajdują się w wyrażeniu regularnym, wywołując metodę wystąpienia Regex.GetGroupNames() .
Właściwości
Captures |
Pobiera kolekcję wszystkich przechwytywania dopasowanych przez grupę przechwytywania w kolejności najbardziej od lewej do lewej (lub najwsłodszej od prawej do wewnątrz, jeśli wyrażenie regularne jest modyfikowane za RightToLeft pomocą opcji). Kolekcja może zawierać zero lub więcej elementów. (Odziedziczone po Group) |
Empty |
Pobiera pustą grupę. Wszystkie nieudane dopasowania zwracają to puste dopasowanie. |
Groups |
Pobiera kolekcję grup dopasowanych przez wyrażenie regularne. |
Index |
Pozycja w oryginalnym ciągu, w którym znajduje się pierwszy znak przechwyconego podciągu. (Odziedziczone po Capture) |
Length |
Pobiera długość przechwyconego podciągu. (Odziedziczone po Capture) |
Name |
Zwraca nazwę grupy przechwytywania reprezentowanej przez bieżące wystąpienie. (Odziedziczone po Group) |
Success |
Pobiera wartość wskazującą, czy dopasowanie zakończyło się pomyślnie. (Odziedziczone po Group) |
Value |
Pobiera przechwycony podciąg z ciągu wejściowego. (Odziedziczone po Capture) |
ValueSpan |
Pobiera przechwycony zakres z ciągu wejściowego. (Odziedziczone po Capture) |
Metody
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
NextMatch() |
Zwraca nowy Match obiekt z wynikami następnego dopasowania, zaczynając od pozycji, w której zakończyło się ostatnie dopasowanie (w znaku po ostatnim dopasowanym znaku). |
Result(String) |
Zwraca rozszerzenie określonego wzorca zastępczego. |
Synchronized(Match) |
Match Zwraca wystąpienie równoważne podanemu wystąpieniu, które jest odpowiednie do współużytkowania między wieloma wątkami. |
ToString() |
Pobiera przechwycony podciąg z ciągu wejściowego, wywołując Value właściwość . (Odziedziczone po Capture) |