方法 : 正規表現を使用して文字列を検索する (C# プログラミング ガイド)
文字列の検索には、Regex クラスを使用できます。 単純な検索から、正規表現を活用した複雑な検索まで、さまざまな検索があります。 Regex クラスを使用して文字列を検索する 2 つの例を次に示します。 詳細については、「.NET Framework の正規表現」を参照してください。
使用例
次のコードは、大文字と小文字を区別せずに配列の文字列を単純に検索するコンソール アプリケーションです。 静的メソッド Regex.IsMatch では、検索する文字列と、検索パターンを含む文字列を前提として、検索を実行します。 この場合、3 つ目の引数は、大文字と小文字の区別を無視することを示します。 詳細については、「RegexOptions」を参照してください。
class TestRegularExpressions
{
static void Main()
{
string[] sentences =
{
"C# code",
"Chapter 2: Writing Code",
"Unicode",
"no match here"
};
string sPattern = "code";
foreach (string s in sentences)
{
System.Console.Write("{0,24}", s);
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
System.Console.WriteLine(" (match for '{0}' found)", sPattern);
}
else
{
System.Console.WriteLine();
}
}
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
/* Output:
C# code (match for 'code' found)
Chapter 2: Writing Code (match for 'code' found)
Unicode (match for 'code' found)
no match here
*/
次のコードは、正規表現を使用して、配列の各文字列の形式を検証するコンソール アプリケーションです。 各文字列が電話番号の形式であることが検証されます。つまり、3 グループの数値がダッシュで区切られ、最初の 2 グループには 3 桁の数値が含まれ、3 つ目のグループには 4 桁の数値が含まれることが検証されます。 この操作は、正規表現 ^\\d{3}-\\d{3}-\\d{4}$ を使用して実行されます。 詳細については、「正規表現言語 - クイック リファレンス」を参照してください。
class TestRegularExpressionValidation
{
static void Main()
{
string[] numbers =
{
"123-555-0190",
"444-234-22450",
"690-555-0178",
"146-893-232",
"146-555-0122",
"4007-555-0111",
"407-555-0111",
"407-2-5555",
};
string sPattern = "^\\d{3}-\\d{3}-\\d{4}$";
foreach (string s in numbers)
{
System.Console.Write("{0,14}", s);
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))
{
System.Console.WriteLine(" - valid");
}
else
{
System.Console.WriteLine(" - invalid");
}
}
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
/* Output:
123-555-0190 - valid
444-234-22450 - invalid
690-555-0178 - valid
146-893-232 - invalid
146-555-0122 - valid
4007-555-0111 - invalid
407-555-0111 - valid
407-2-5555 - invalid
*/