C#の正規表現で真偽値を返すサンプルです。IsMatchメソッドを使用します。
目次
メソッド | IsMatchメソッド |
AB | 文字列を指定 |
[AB] | 文字をORで指定 |
[^A] | 文字を否定で指定 |
[A-C] | 文字を範囲で指定 |
^A | 先頭の文字列を指定 |
A$ | 末尾の文字列を指定 |
c{2} | 連続する文字を指定 |
[0-9]{1,} | 数値1桁以上を指定 |
^[0-9]{5}$ | 5桁の半角数値を指定 |
^[0-9a-f]{5}$ | 5桁の半角数値または英字の小文字(a-f)を指定 |
^[0-9]{3}-[0-9]{4}$ | 郵便番号を指定(数値3桁とハイフンと数値4桁) |
エスケープ | ドット(.)を文字として指定(エスケープ) |
大文字小文字を無視する(RegexOptions.IgnoreCase) | |
エラー | RegularExpressionsが存在しないというエラーが出る場合 |
IsMatchメソッド
public static bool IsMatch (string input, string 正規表現のパターン); |
- 1つめの引数は、対象の文字列です。
- 2つめの引数は、正規表現のパターンです。
- 一致した場合、trueを返します。
- 一致しなかった場合、falseを返します。
文字列を指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "BC";
Console.WriteLine(Regex.IsMatch("ABC", a)); //True
Console.WriteLine(Regex.IsMatch("ACB", a)); //False
}
}
8行目は、文字列「BC」を指定しています。
文字をORで指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "[AB]";
Console.WriteLine(Regex.IsMatch("ABC", a)); //True
Console.WriteLine(Regex.IsMatch("ZZB", a)); //True
Console.WriteLine(Regex.IsMatch("ZZZ", a)); //False
}
}
8行目は、「A」または「B」を指定しています。
文字を否定で指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "[^A]";
Console.WriteLine(Regex.IsMatch("ZZZ", a)); //True
Console.WriteLine(Regex.IsMatch("ZAA", a)); //True
Console.WriteLine(Regex.IsMatch("AAA", a)); //False
}
}
8行目は、「A」以外の文字を指定しています。
文字を範囲で指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "[A-C]";
Console.WriteLine(Regex.IsMatch("ABC", a)); //True
Console.WriteLine(Regex.IsMatch("ZZC", a)); //True
Console.WriteLine(Regex.IsMatch("ZZZ", a)); //False
}
}
8行目は、「A」または「B」または「C」の文字があるか指定しています。
先頭の文字列を指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "^AB";
Console.WriteLine(Regex.IsMatch("ABC", a)); //True
Console.WriteLine(Regex.IsMatch("ACB", a)); //False
}
}
8行目は、先頭が「AB」の文字を指定しています。
末尾の文字列を指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "BC$";
Console.WriteLine(Regex.IsMatch("ABC", a)); //True
Console.WriteLine(Regex.IsMatch("ACB", a)); //False
}
}
8行目は、末尾が「BC」の文字を指定しています。
連続する文字を指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "c{2}";
Console.WriteLine(Regex.IsMatch("acccb", a)); //True
Console.WriteLine(Regex.IsMatch("accb", a)); //True
Console.WriteLine(Regex.IsMatch("acbc", a)); //False
}
}
8行目は、「c」が2回連続する文字を指定しています。
数値1桁以上を指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "[0-9]{1,}-";
Console.WriteLine(Regex.IsMatch("1-", a));//True
Console.WriteLine(Regex.IsMatch("123-", a));//True
Console.WriteLine(Regex.IsMatch("ab1-", a));//True
Console.WriteLine(Regex.IsMatch("a1b-", a));//False
}
}
8行目は、数値1桁以上とハイフン(-)を指定しています。
5桁の半角数値を指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "^[0-9]{5}$";
Console.WriteLine(Regex.IsMatch("12345", a));//True
Console.WriteLine(Regex.IsMatch("123", a));//False 桁数不足
Console.WriteLine(Regex.IsMatch("a2345", a));//False 文字あり
}
}
8行目は、5桁の半角数値を指定しています。
5桁の半角数値または英字の小文字(a-f)を指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "^[0-9a-f]{5}$";
Console.WriteLine(Regex.IsMatch("1a23b", a));//True
Console.WriteLine(Regex.IsMatch("a1bc", a));//False 桁数不足
Console.WriteLine(Regex.IsMatch("12345", a));//True 数値のみ
Console.WriteLine(Regex.IsMatch("abcde", a));//True 英字のみ
}
}
8行目は、5桁の半角数値または英字の小文字(a-f)を指定しています。
郵便番号を指定(数値3桁とハイフンと数値4桁)
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string a = "^[0-9]{3}-[0-9]{4}$";
Console.WriteLine(Regex.IsMatch("123-4567", a));//True
Console.WriteLine(Regex.IsMatch("1234567", a));//False
Console.WriteLine(Regex.IsMatch("1234-567", a));//False
}
}
8行目は、郵便番号(数値3桁とハイフンと数値4桁)を指定しています。
ドット(.)を文字として指定(エスケープ)
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string ptr = Regex.Escape("a.");
Console.WriteLine(Regex.IsMatch("a.", ptr));//True
Console.WriteLine(Regex.IsMatch("aa", ptr));//False
}
}
8行目は、Escapeメソッドで、ドット(.)を文字として扱います。「a.」を指定しています。
ドット(.)にエスケープをつけない場合は任意の一文字という意味になります。
Escapeメソッドは、文字 (\、*、+、?、|、{、[、(、)、^、$、.、#、空白) をエスケープします。
大文字小文字を無視する(RegexOptions.IgnoreCase)
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
string ptr = "c";
bool b = Regex.IsMatch("ABC", ptr, RegexOptions.IgnoreCase);
Console.WriteLine(b); //True
}
}
10行目は、IsMatchメソッドの3つめの引数にRegexOptions.IgnoreCaseを指定しています。大文字小文字を無視します。
以下はMicrosoftのIsMatch(String, String)のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.text.regularexpressions.regex.ismatch?view=netframework-4.8#System_Text_RegularExpressions_Regex_IsMatch_System_String_System_String_
RegularExpressionsが存在しないというエラーが出る場合
「型または名前空間の名前'RegularExpressions'が名前空間'System.Text'に存在しません。」を解消する手順です。
1.ソリューションエクスプローラーの「参照」→「参照の追加」をクリックします。
2.「System」にチェックを入れてOKを押すとエラーが消えます。
関連の記事