文字列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);