MatchCollectionクラスは、正規表現パターンを反復して入力文字列に適用して、見つかった一致の成功したセットを表します。
確認した時点では、msdnのRegex.Match メソッドの説明は、翻訳が読みにくいので、自分で翻訳し直しました。
全ての部分を翻訳し直したわけではなく、また、リンクも再現していないので、元のページと比較しながらご利用下さい。
msdnの情報:MatchCollectionクラス
正規表現パターンを反復して入力文字列に適用して、見つかった一致の成功したセットを表します。
備考
コレクションは、不変です(読取専用)そして、public コンストラクタを持っていません。Regex.Matchesメソッドは、MatchCollectionオブジェクトを返します。
コレクションは、0以上のSystem.Text.RegularExpressions.Matchオブジェクトが含まれています。 一致が成功の場合、コレクションは、入力文字列で見つかる各々の一致が、1つのSystem.Text.RegularExpressions.Matchオブジェクトに埋め込まれます。 一致が不成功の場合、コレクションは、System.Text.RegularExpressions.Matchオブジェクトを含みません。 そして、そのCountプロパティは、ゼロと等価です。
特定の入力文字列に正規表現パターンを適用すると、正規表現エンジンは、MatchCollectionオブジェクトを構築するために、2つの技術の両方を使用します。:
- 直接評価
MatchCollectionオブジェクトは、Regex.Matchesメソッドに呼び出す、個々の呼び出しから結果として、すべての一致が一度に、埋め込まれます。コレクションのCountプロパティが呼び出されるとき、この技術が使われます。これは、通常、コレクションを埋め込むより多くの高くつくメソッドです。そして、達成する大きな性能を必要とします。
- 遅延評価
MatchCollectionオブジェクトは、一致×一致基準上で、必要に応じて埋め込まれます。繰り返しRegex.Matchメソッドを呼び出すことは、正規表現エンジンと同等です。そして、各々の一致をコレクションに追加します。コレクションが、そのGetEnumeratorメソッドを通して呼び出されるとき、あるいは、それが(C#の)foreachステートメントや(Visual Basicの)For Each...Nextステートメントを用いて呼び出されるとき、この技術が使用されます。
コレクションのメンバーを繰り返すために、あなたは、GetEnumeratorメソッドによって返される列挙子を取得する代わりに、あなたの言語で提供されている(C#のforeachとVisual BasicのためのEach…Nextのような)コレクションの繰り返し構文を使用する必要があります。
使用例
次の例は、一連の一致インスタンスを調べるMatchCollectionクラスの使い方を説明します。
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main ()
{
// Define a regular expression for repeated words.
// 繰り返された単語のための正規表現を定義します。
Regex rx = new Regex(@"\b(?\w+)\s+(\k)\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Define a test string.
// テスト文字列を定義します。
string text = "The the quick brown fox fox jumped over the lazy dog dog.";
// Find matches.
// 一致を検索します。
MatchCollection matches = rx.Matches(text);
// Report the number of matches found.
// 見つかった一致の数を報告します。
Console.WriteLine("{0} matches found in:\n {1}",
matches.Count,
text);
// Report on each match.
// 各々の一致を報告します。
foreach (Match match in matches)
{
GroupCollection groups = match.Groups;
Console.WriteLine("'{0}' repeated at positions {1} and {2}",
groups["word"].Value,
groups[0].Index,
groups[1].Index);
}
}
}
// The example produces the following output to the console:
// 3 matches found in:
// The the quick brown fox fox jumped over the lazy dog dog.
// 'The' repeated at positions 0 and 4
// 'fox' repeated at positions 20 and 25
// 'dog' repeated at positions 50 and 54
