The road to C# master trapemiya

C#を中心に、.NETの話題を取り上げます。

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  256  : 記事  1  : コメント  10763  : トラックバック  30

ニュース

Since 2005年10月26日

わんくま同盟

わんくま同盟

Microsoft MVP


Visual Developer - Visual C#

記事カテゴリ

書庫

日記カテゴリ

2009年4月18日 #

文字列Aがあるとします。この文字列Aに、複数の文字列のうちどれかが含まれているかどうかを調べる方法として、MSDNフォーラムに以下のようなスレッドが立ちました。

文字列に特定の文字列が存在しているかを調べる方法
http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/1a28ccd0-feb0-49f0-bc60-62debd99a112/

上記のスレッドは、配列を使った検索による方法を題材として進んでいるので、ここでは他の方法として正規表現を使用した方法をご紹介します。

例えば以下のようにすれば、「user unknown」など指定した5つの文字列のうち、どれかを含んでいれば、regex.IsMatch("調査対象の文字列")はtrueを返します。

Regex regex = new Regex(@"user unknown" +
                                   @"|unknown user" +
                                   @"|Unable to deliver to destination domain" +
                                   @"|no mailbox" +
                                   @"|No such user here"
                                   , RegexOptions.IgnoreCase);

if (regex.IsMatch(str))
{
    //見つかった時の処理
       ・
       ・
}
else
{
    //見つからなかった時の処理
       ・
       ・
}

以上は論理和(or。すなわちどれか一つを含んでいる)の例ですが、論理積(and。すなわち全てを含んでいる)の場合は、以下のようにします。

Regex regex = new Regex("^.*" +
                                   "(?=.*user unknown)" +
                                   "(?=.*unknown user)" +
                                   "(?=.*Unable to deliver to destination domainr)" +
                                   "(?=.*no mailbox)" +
                                   "(?=.*No such user here)" +
                                   ".*$"
                                   , RegexOptions.IgnoreCase);
posted @ 0:23 | Feedback (10)