Match Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Tek bir normal ifade eşleşmesinin sonuçlarını temsil eder.
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
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örneklerde normal ifadesi Console\.Write(Line)?
kullanılır. Normal ifade aşağıdaki gibi yorumlanır:
Konsol'a\ geçin. Yazmak | "Console.Write" dizesini eşleştirin. "." karakterinin, herhangi bir karakterle eşleşen bir joker karakter yerine değişmez değer dönemi olarak yorumlandığı şekilde kaçış karakterine dikkat edin. |
(Çizgi)? | "Line" dizesinin sıfır veya bir oluşumunu eşleştirin. |
Örnek 1
Aşağıdaki örnek, bir giriş dizesindeki Regex.Matches(String, String) tüm desen eşleşmelerini almak için yöntemini çağırır. Daha sonra döndürülen MatchCollection nesnedeki Match nesneleri yineler ve her eşleşmeyle ilgili bilgileri görüntüler.
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.
Örnek 2
Aşağıdaki örnek, bir kerede Match(String, String) bir eşleşme almak için ve NextMatch yöntemlerini çağırır.
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.
Açıklamalar
Match Nesnesi sabittir ve ortak oluşturucuya sahip değildir. sınıfının bir örneği Match yöntemi tarafından Regex.Match döndürülür ve dizedeki ilk desen eşleşmesini temsil eder. Sonraki eşleşmeler, yöntemi tarafından Match döndürülen nesnelerle Match.NextMatch temsil edilir. Ayrıca, sıfır, bir veya daha fazla Match nesneden oluşan bir MatchCollection nesne yöntemi tarafından Regex.Matches döndürülür.
Regex.Matches Yöntem bir giriş dizesindeki normal ifade deseni ile eşleşmezse boş MatchCollection bir nesne döndürür. Daha sonra C# dilinde bir foreach
yapı veya Visual Basic içindeki bir For Each
yapıyı kullanarak koleksiyonu yineleyebilirsiniz.
Regex.Match Yöntem normal ifade deseni ile eşleşmezse, değerine eşit Match.Emptybir Match nesne döndürür. Eşleşmenin Success başarılı olup olmadığını belirlemek için özelliğini kullanabilirsiniz. Aşağıdaki örnek, bir gösterim sağlar.
// 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
Bir desen eşleşmesi başarılı olursa, Value özelliği eşleşen alt dizeyi içerir, Index özelliği, eşleşen alt dizenin giriş dizesindeki sıfır tabanlı başlangıç konumunu gösterir ve Length özellik de giriş dizesindeki eşleşen alt dizenin uzunluğunu gösterir.
Tek bir eşleşme birden çok yakalama grubu içerebileceğinden, Match öğesini döndüren GroupCollectionbir Groups özelliği vardır. Örneğin Match kendisi, Match.Groups[0]
tüm eşleşmeyi temsil eden (Match.Groups(0)
Visual Basic içinde) koleksiyonundaki ilk nesneye eşdeğerdir. Yakalanan gruplara bir eşleşmede aşağıdaki yollarla erişebilirsiniz:
(C#) veya
For Each
(Visual Basic) yapısıforeach
kullanarak nesnenin GroupCollection üyelerini yineleyebilirsiniz.Yakalama grubunun sayısına göre grupları almak için özelliğini kullanabilirsiniz GroupCollection.Item[Int32] . Örnek Regex.GetGroupNumbers yöntemini çağırarak normal ifadede hangi numaralı grupların mevcut olduğunu belirleyebileceğinizi unutmayın.
Yakalama grubunun adına göre grupları almak için özelliğini kullanabilirsiniz GroupCollection.Item[String] . Örnek Regex.GetGroupNames() yöntemini çağırarak normal ifadede hangi adlandırılmış grupların mevcut olduğunu belirleyebileceğinizi unutmayın.
Özellikler
Captures |
Yakalama grubuyla eşleşen tüm yakalamaların bir koleksiyonunu, en soldaki en iç birinci sırada (veya normal ifade seçeneğiyle RightToLeft değiştirildiğinde en içteki-en sağdaki-ilk sırada) alır. Koleksiyonda sıfır veya daha fazla öğe olabilir. (Devralındığı yer: Group) |
Empty |
Boş grubu alır. Tüm başarısız eşleşmeler bu boş eşleşmeyi döndürür. |
Groups |
Normal ifadeyle eşleşen grup koleksiyonunu alır. |
Index |
Yakalanan alt dizenin ilk karakterinin bulunduğu özgün dizedeki konum. (Devralındığı yer: Capture) |
Length |
Yakalanan alt dizenin uzunluğunu alır. (Devralındığı yer: Capture) |
Name |
Geçerli örnek tarafından temsil edilen yakalama grubunun adını döndürür. (Devralındığı yer: Group) |
Success |
Eşleşmenin başarılı olup olmadığını belirten bir değer alır. (Devralındığı yer: Group) |
Value |
Yakalanan alt dizeyi giriş dizesinden alır. (Devralındığı yer: Capture) |
ValueSpan |
Yakalanan yayılmayı giriş dizesinden alır. (Devralındığı yer: Capture) |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
NextMatch() |
Son eşleşmenin sona erdiği konumdan (son eşleşen karakterden sonraki karakterde) başlayarak sonraki eşleşmenin sonuçlarını içeren yeni Match bir nesne döndürür. |
Result(String) |
Belirtilen değiştirme deseninin genişlemesini döndürür. |
Synchronized(Match) |
Birden çok iş parçacığı arasında paylaşmaya uygun sağlanan örnekle eşdeğer bir Match örnek döndürür. |
ToString() |
özelliğini çağırarak giriş dizesinden yakalanan alt dizeyi Value alır. (Devralındığı yer: Capture) |