- ベストアンサー
正規表現で検索するときのパターンについて
VBScriptの正規表現で、100行くらいのテキストファイルを対象に検索を行いたいのですが、その中の一行に単語1と単語2と単語3の3つの単語が全て含まれるそういう行があるかないかを調べるには、どういうパターンにすればいいでしょうか? (単語1と単語2と単語3の順番は問いません。) ご教授のほどよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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とか使ってもいいのではないかと?
その他の回答 (3)
- n-jun
- ベストアンサー率33% (959/2873)
>その場合は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)
ANo.1です >3つの単語が全て含まれる 見落としてました。スルーして下さい。
- n-jun
- ベストアンサー率33% (959/2873)
http://www.mnet.ne.jp/~nakama/ 【その3】3.メタ文字の種類 (4)いずれかの文字列 が参考になると思います。
お礼
サンプルまで書いて頂いてありがとうございました。おかげさまでプログラムを組むことが出来ました。 どうもありがとうございました。