解決済み

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

  • 困ってます
  • 質問No.4172289
  • 閲覧数54
  • ありがとう数2
  • 気になる数0
  • 回答数4
  • コメント数0

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

ご教授のほどよろしくお願いいたします。

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

  • 回答No.3

ベストアンサー率 33% (959/2868)

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

サンプルまで書いて頂いてありがとうございました。おかげさまでプログラムを組むことが出来ました。
どうもありがとうございました。
投稿日時 - 2008-07-14 03:31:52
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全3件)

  • 回答No.4

ベストアンサー率 33% (959/2868)

>その場合は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
ご参考になれば。
  • 回答No.2

ベストアンサー率 33% (959/2868)

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

ベストアンサー率 33% (959/2868)

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

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
このQ&Aのテーマ

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ