Home > C# > C# 学び直し > 正規表現

msdnのMatchCollectionクラスの説明を翻訳した

新規作成日 2017-11-10/
最終更新日

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
このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」