次の方法で共有


MatchCollection.Count プロパティ

定義

一致の数を取得します。

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

プロパティ値

一致の数。

実装

例外

タイムアウトが発生しました。

次の例では、 プロパティを Count 使用して、 メソッドの呼び出しで Regex.Matches(String, String) 一致が見つかったかどうかを判断します。 そうでない場合は、一致が見つからなかったことを示します。 それ以外の場合は、一致を列挙し、その値と、検出された入力文字列内の位置を表示します。

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

正規表現パターン \d+ は、入力文字列内の 1 つ以上の小数点文字と一致します。

注釈

コレクションCountの プロパティの値を取得してオブジェクトのMatchCollection個々のメンバーにアクセスすると、正規表現エンジンは直接評価を使用してコレクションにデータを設定します。 これに対し、メソッドをGetEnumerator呼び出す (または C# の ステートメントと For EachVisual Basic の ...Nextステートメントを使用foreachする) 場合、正規表現エンジンは、遅延評価を使用して、必要に応じて コレクションを設定します。 直接評価は、遅延評価よりもはるかに高価な方法でコレクションを構築できます。

MatchCollectionオブジェクトは通常、遅延評価を使用して設定されるため、コレクションに完全に設定される前にコレクション内の要素の数を決定しようとすると、RegexMatchTimeoutException例外がスローされる可能性があります。 この例外は、一致する操作のタイムアウト値が有効であり、1 つの一致を見つけようとしたときに、そのタイムアウト間隔を超えた場合にスローされる可能性があります。

適用対象