C#のMatchesメソッドの正規表現で複数の値を返すサンプルです。
目次
説明 | Matchesメソッド |
サンプル | 文字列を検索する |
文字をORで検索する | |
文字を否定で検索する | |
文字を範囲で指定して検索する | |
連続する文字を指定して検索する | |
連続する文字(個以上)を指定して検索する | |
参考 | 大文字小文字を無視する |
RegularExpressionsが存在しないというエラーが出る場合 |
Matchesメソッド
public static Matchオブジェクト Matches (string input, string pattern); |
- 1つめの引数は、対象の文字列です。
- 2つめの引数は、正規表現です。
- 正規表現で一致した複数の値を返します。
- 以下はMicrosoftのMatches(String, String)のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.text.regularexpressions.regex.matches?view=netframework-4.8#System_Text_RegularExpressions_Regex_Matches_System_String_System_String_
文字列を検索する
文字列を検索するサンプルです。
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 = "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」が表示されます。戻り値がコレクションなのでインデックス値を指定しています。
大文字小文字を無視する
大文字小文字を無視するサンプルです。
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 文字列を置き換えるサンプル