• ベストアンサー

正規表現で検索するときのパターンについて

VBScriptの正規表現で、100行くらいのテキストファイルを対象に検索を行いたいのですが、その中の一行に単語1と単語2と単語3の3つの単語が全て含まれるそういう行があるかないかを調べるには、どういうパターンにすればいいでしょうか? (単語1と単語2と単語3の順番は問いません。) ご教授のほどよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

Matchesコレクションでマッチした個数が2以上の場合、 表示するサンプルです。 Dim str() ReDim str(2) Set Ex = New RegExp Ex.Pattern = "単語1|単語2|単語3" Ex.Global = True str(0) = "単語3、単語4、単語2" str(1) = "単語1、単語3、単語2" str(2) = "単語2、単語4、単語3" For i=0 To 2     If Ex.Test(str(i)) Then        Set Matches = Ex.Execute(str(i))            If Matches.Count > 2 Then               Msgbox str(i)            End If        Set Matches = Nothing     End If Next Set Ex = Nothing Erase str こんな方法はどうでしょう? ただし、単語1が2個・単語3が1個あってもマッチされますけど。 そのようなデータはヒットさせたくない場合には、スルー願います。 その場合はInStrとか使ってもいいのではないかと?

noname#208339
質問者

お礼

サンプルまで書いて頂いてありがとうございました。おかげさまでプログラムを組むことが出来ました。 どうもありがとうございました。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

>その場合はInStrとか使ってもいいのではないかと? のサンプルです。 Dim str() ReDim str(2) str(0) = "単語3、単語4、単語2" str(1) = "単語1、単語3、単語2" str(2) = "単語2、単語4、単語3" For i=0 To 2     If (InStr(str(i),"単語1")* _         InStr(str(i),"単語2")* _         InStr(str(i),"単語3")) Then        Msgbox str(i)     End If Next Erase str ご参考になれば。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

ANo.1です >3つの単語が全て含まれる 見落としてました。スルーして下さい。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

http://www.mnet.ne.jp/~nakama/ 【その3】3.メタ文字の種類 (4)いずれかの文字列 が参考になると思います。

関連するQ&A