次の方法で共有


方法 : 正規表現を使用して文字列を検索する (C# プログラミング ガイド)

更新 : 2007 年 11 月

文字列の検索には、System.Text.RegularExpressions.Regex クラスを使用できます。単純な検索から、正規表現を活用した複雑な検索まで、さまざまな検索があります。Regex クラスを使用して文字列を検索する 2 つの例を次に示します。詳細については、「.NET Framework の正規表現」を参照してください。

使用例

次のコードは、大文字と小文字を区別せずに配列の文字列を単純に検索するコンソール アプリケーションです。静的メソッド Regex.IsMatch では、検索する文字列と、検索パターンを含む文字列を前提として、検索を実行します。この場合、3 つ目の引数は、大文字と小文字の区別を無視することを示します。詳細については、「System.Text.RegularExpressions.RegexOptions」を参照してください。

class TestRegularExpressions
{
    static void Main()
    {
        string[] sentences = 
        {
            "cow over the moon",
            "Betsy the Cow",
            "cowering in the corner",
            "no match here"
        };

        string sPattern = "cow";

        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:
           cow over the moon  (match for 'cow' found)
           Betsy the Cow  (match for 'cow' found)
           cowering in the corner  (match for 'cow' found)
           no match here
*/

次のコードは、正規表現を使用して、配列の各文字列の形式を検証するコンソール アプリケーションです。各文字列が電話番号の形式であることが検証されます。つまり、3 グループの数値がダッシュで区切られ、最初の 2 グループには 3 桁の数値が含まれ、3 つ目のグループには 4 桁の数値が含まれることが検証されます。この操作は、正規表現 ^\\d{3}-\\d{3}-\\d{4}$ を使用して実行されます。詳細については、「正規表現言語要素」を参照してください。

class TestRegularExpressionValidation
{
    static void Main()
    {
        string[] numbers = 
        {
            "123-456-7890", 
            "444-234-22450", 
            "690-203-6578", 
            "146-893-232",
            "146-839-2322",
            "4007-295-1111", 
            "407-295-1111", 
            "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-456-7890 - valid
     444-234-22450 - invalid
      690-203-6578 - valid
       146-893-232 - invalid
      146-839-2322 - valid
     4007-295-1111 - invalid
      407-295-1111 - valid
        407-2-5555 - invalid
*/

参照

概念

C# プログラミング ガイド

参照

文字列 (C# プログラミング ガイド)