C# 正規表現で一致した全ての文字列を返す(Matchesメソッド)

C#の正規表現で一致した全ての文字列を返すサンプルです。
testメソッドを使用します。

確認環境
・Microsoft Visual Studio Community 2017

目次

Matchesメソッド

public static Matchオブジェクトのコレクション Matches (string input, string pattern);

文字列を検索する

文字列を検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "BC";
        MatchCollection b = Regex.Matches("ABCABC", a);

        Console.WriteLine(b[0]); //BC
        Console.WriteLine(b[1]); //BC
    }
}

8行目は、文字列「BC」があるかを指定しています。
9行目のMatchesメソッドの引数にはBCが2つあります。
11行目と12行目はそれぞれBCが表示されます。戻り値がコレクションなのでインデックス値を指定しています。

文字をORで検索する

文字をORで検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "[AB]";

        MatchCollection b = Regex.Matches("ABCABC", a);

        Console.WriteLine(b[0]); //A
        Console.WriteLine(b[1]); //B
        Console.WriteLine(b[2]); //A
        Console.WriteLine(b[3]); //B
    }
}

8行目は、正規表現で「A」または「B」があるかを指定しています。
10行目のMatchesメソッドの引数にはAとBが2つずつあります。
12~15行目はそれぞれAまたはBが表示されます。戻り値がコレクションなのでインデックス値を指定しています。

文字を否定で検索する

文字を否定で検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "[^A]";

        MatchCollection b = Regex.Matches("ABC", a);

        Console.WriteLine(b[0]); //B
        Console.WriteLine(b[1]); //C
    }
}

8行目は、正規表現で「A」以外の文字があるか指定しています。
10行目は、「A」以外の文字が2つあります。
12,13行目は、「A」以外の文字が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

文字を範囲で指定して検索する

文字を範囲で指定して検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "[B-D]";

        MatchCollection b = Regex.Matches("ABCDE", a);

        Console.WriteLine(b[0]); //B
        Console.WriteLine(b[1]); //C
        Console.WriteLine(b[2]); //D
    }
}

8行目は、正規表現で「B」または「C」または「D」の文字があるか指定しています。
12~14行目は、「B,C,D」の文字が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

先頭の文字列を検索する

先頭の文字列を検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "^AB";

        MatchCollection b = Regex.Matches("ABC", a);

        Console.WriteLine(b[0]); //AB
    }
}

8行目は、正規表現で先頭に「AB」の文字があるか指定しています。
12行目は、「AB」が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

文字列の最後尾を検索する

文字列の最後尾を検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "BC$";

        MatchCollection b = Regex.Matches("ABC", a);

        Console.WriteLine(b[0]); //BC
    }
}

8行目は、正規表現で最後尾に「BC」の文字があるか指定しています。
12行目は、「BC」が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

連続する文字を指定して検索する

連続する文字を指定して検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "c{2}";

        MatchCollection b = Regex.Matches("acccb", a);

        Console.WriteLine(b[0]); //cc
    }
}

8行目は、正規表現で「c」が2回連続することを指定しています。
12行目は、「cc」が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

連続する文字(個以上)を指定して検索する

連続する文字(個以上)を指定して検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "c{2,}";

        MatchCollection b = Regex.Matches("acccb", a);

        Console.WriteLine(b[0]); //ccc
    }
}

8行目は、正規表現で「c」が2回以上連続することを指定しています。
10行目は、文字「ccc」があります。
12行目は、2つ以上の連続する文字で「ccc」が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

1回以上出現している文字を検索する

1回以上出現している文字を検索するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "c+";

        MatchCollection b = Regex.Matches("acccb", a);

        Console.WriteLine(b[0]); //ccc
    }
}

8行目は、正規表現で「c」が1回以上出現していることを指定しています。
10行目は、文字「ccc」があります。
12行目は、1回以上出現している文字で「ccc」が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

大文字小文字を無視する

大文字小文字を無視するサンプルです。

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "c";

        MatchCollection b = Regex.Matches("ABC", a,RegexOptions.IgnoreCase);

        Console.WriteLine(b[0]); //C
    }
}

8行目は、「c」を指定しています。
10行目は、Matchesメソッドの3つめの引数にRegexOptions.IgnoreCaseを指定しています。大文字小文字を無視します。
12行目は、大文字の「C」が表示されます。戻り値がコレクションなのでインデックス値を指定しています。

RegularExpressionsが存在しないというエラーが出る場合

「型または名前空間の名前'RegularExpressions'が名前空間'System.Text'に存在しません。」を解消する手順です。

1.ソリューションエクスプローラーの「参照」→「参照の追加」をクリックします。

 

2.「System」にチェックを入れてOKを押すとエラーが消えます。

関連の記事

C# 正規表現で一致した最初の文字列を返す(Matchメソッド)
C# 文字列を分割して配列にするサンプル(Split)
C# 文字列を置き換えるサンプル(Replace)

△上に戻る