MatchCollection.Count Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die Anzahl der Übereinstimmungen ab.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Eigenschaftswert
Die Anzahl der Übereinstimmungen.
Implementiert
Ausnahmen
Ein Timeout ist aufgetreten.
Beispiele
Im folgenden Beispiel wird die Count Eigenschaft verwendet, um zu bestimmen, ob der Aufruf der Regex.Matches(String, String) Methode Übereinstimmungen gefunden hat. Andernfalls wird angegeben, dass keine Übereinstimmungen gefunden wurden. Andernfalls werden die Übereinstimmungen aufgelistet und deren Wert und die Position in der Eingabezeichenfolge angezeigt, an der sie gefunden wurden.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\d+";
string[] inputs = { "This sentence contains no numbers.",
"123 What do I see?",
"2468 369 48 5" };
foreach (var input in inputs) {
MatchCollection matches = Regex.Matches(input, pattern);
Console.WriteLine("Input: {0}", input);
if (matches.Count == 0)
Console.WriteLine(" No matches");
else
foreach (Match m in matches)
Console.WriteLine(" {0} at index {1}", m.Value, m.Index);
Console.WriteLine();
}
}
}
// The example displays the following output:
// Input: This sentence contains no numbers.
// No matches
//
// Input: 123 What do I see?
// 123 at index 0
//
// Input: 2468 369 48 5
// 2468 at index 0
// 369 at index 5
// 48 at index 9
// 5 at index 12
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\d+"
Dim inputs() As String = { "This sentence contains no numbers.",
"123 What do I see?",
"2468 369 48 5" }
For Each inputStr In inputs
Dim matches As MatchCollection = Regex.Matches(inputStr, pattern)
Console.WriteLine("Input: {0}", inputStr)
If matches.Count = 0
Console.WriteLine(" No matches")
Else
For Each m As Match In matches
Console.WriteLine(" {0} at index {1}", m.Value, m.Index)
Next
End If
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' Input: This sentence contains no numbers.
' No matches
'
' Input: 123 What do I see?
' 123 at index 0
'
' Input: 2468 369 48 5
' 2468 at index 0
' 369 at index 5
' 48 at index 9
' 5 at index 12
Das Muster \d+ für reguläre Ausdrücke entspricht einem oder mehreren Dezimalzeichen in einer Eingabezeichenfolge.
Hinweise
Der Zugriff auf einzelne Elemente des MatchCollection Objekts durch Abrufen des Werts Count der Eigenschaft der Auflistung bewirkt, dass das Modul für reguläre Ausdrücke die Auflistung mit direkter Auswertung auffüllt. ln contrast, calling the method (or using the foreachGetEnumerator statement in C# and the For Each...Next statement in Visual Basic) causes the regular expression engine to populate the collection on an as needed basis using lazy evaluation. Direkte Auswertung kann eine viel teurere Methode zur Erstellung der Sammlung sein als faule Auswertung.
Da das MatchCollection Objekt in der Regel mit einer faulen Auswertung aufgefüllt wird, kann beim Versuch, die Anzahl der Elemente in der Auflistung zu ermitteln, bevor es vollständig ausgefüllt wurde, eine RegexMatchTimeoutException Ausnahme auslösen. Diese Ausnahme kann ausgelöst werden, wenn ein Timeoutwert für Abgleichsvorgänge wirksam ist und der Versuch, eine einzelne Übereinstimmung zu finden, dieses Timeoutintervall überschreitet.