MatchCollection.Count Propriété

Définition

Obtient le nombre de correspondances.

public:
 property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer

Valeur de propriété

Nombre de correspondances.

Implémente

Exceptions

Un délai d’attente a expiré.

Exemples

L’exemple suivant utilise la Count propriété pour déterminer si l’appel à la Regex.Matches(String, String) méthode a trouvé des correspondances. Si ce n’est pas le cas, cela indique qu’aucune correspondance n’a été trouvée. Sinon, il énumère les correspondances et affiche leur valeur et la position dans la chaîne d’entrée à laquelle ils ont été trouvés.

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

Le modèle \d+ d’expression régulière correspond à un ou plusieurs caractères décimaux dans une chaîne d’entrée.

Remarques

L’accès à des membres individuels de l’objet MatchCollection en récupérant la valeur de la propriété de la collection entraîne le remplissage de Count la collection par le moteur d’expression régulière à l’aide de l’évaluation directe. ln contraste, l’appel de la GetEnumerator méthode (ou l’utilisation de l’instruction foreach en C# et de l’instruction For Each...Next en Visual Basic) entraîne le moteur d’expressions régulières à remplir la collection selon les besoins à l’aide d’une évaluation différée. L’évaluation directe peut être une méthode beaucoup plus coûteuse pour créer la collection que l’évaluation paresseuse.

Étant donné que l’objet est généralement rempli à l’aide MatchCollection de l’évaluation différée, la tentative de déterminer le nombre d’éléments dans la collection avant qu’elle n’ait été entièrement remplie peut lever une RegexMatchTimeoutException exception. Cette exception peut être levée si une valeur de délai d’attente pour les opérations de correspondance est en vigueur et que la tentative de recherche d’une correspondance unique dépasse cet intervalle de délai d’attente.

S’applique à