• ベストアンサー

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

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

noname#208339
noname#208339

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

  • ベストアンサー
  • 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

  • ruby 配列の中の正規表現は比較に使える?

    数万行あるテキストファイルの中を数百パターンくらいの正規表現で サーチするRubyスクリプトを作成しようとしていますがうまくできません。 どなたかお知恵を拝借させてください。 以下の流れで作ろうとしています。 「 ファイルを一行GETして、その行が事前に定義した配列内の正規表現に合致していればprintする。 次の行をGETして、最初からた正規表現の配列を比較して、合致していればprintする。 テキストファイルが終わるまで、繰り返し 」 何分初心者なもので…、他のやり方があれば教えていただきたいです… ヨロシクお願いしますm(__)m

    • ベストアンサー
    • Ruby
  • 正規表現での検索がうまくいきません…

    質問させて下さい。 WindowsにてAtivePerlの5.8.6.811を使っています。 サーバはAnHttpdです。 htmlの文章ファイルを読み込んで、空白行で区切ってリストに読み込み、そのリストを配列ごとに正規表現で検索して、マッチしたものだけをhtmlで表示しようとしています。 ところが、検索結果にどうにも変な時があります。 少し試したところ、「ゲーム」「ラッキー」などの「ー」が入る文字を検索しようとすると、全く処理をしてくれないのです。 その上、そのパターンマッチ検索のスクリプトより下に書いた行が全て実行されなくなってしまいます。 Shift-JISで書いているので、ダメ文字の類なのかとも思い、シングルクォートで囲ったり、「ー」の後に\をいれてみたりもしましたが、変化ありません(十や表はこれでうまくいきました…)。 また、それ以外にも、「スイス」などという、絶対に書かれていない単語で検索しても、検索されてしまう配列があったりします。 これに至っては完全に謎です…。 分かる方がいらしたら、どうかよろしくお願いします。

    • ベストアンサー
    • CGI
  • パターン検索の方法、正規表現

    <TD><IMG src=".jpg"></TD> <TD>●<BR>単語<BR>単語</TD> というパターンの箇所を一気に <TD><IMG src="●.jpg"></TD> <TD>●<BR>単語<BR>単語</TD> に検索置換したいのですが、どうしたらいいのでしょうか?●は4~5桁の数字がほとんどですが、中に英文字が入ったものもあります。 今、わからなくて、●をコピペして.jpgの前にはりつけて作業しています。これがわかるとすごくたすかります。 小学生が宿題教えてっていってるような質問ですみませんが、すごい困ってるのでどなたか教えて下さい。 あと、この正規表現、パターン検索を勉強するのに わかりやすい本とか、参考になるウェブとかあったら教えて下さい。マニュアルを読んでもちんぷんかんぷんなんです・・・T-T

  • 正規表現で置換

    正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。

  • この正規表現のパターンについて

    この正規表現のパターンについての意味を教えてほしい。 【疑問】 $pattern ="/((?:.*?<p>.*?<\/p>){3}).*/mis"; ↓の中の (?:.*?<p>.*?<\/p>){3} ↓の中の 先頭の「 ( 」の次の、「 ?: 」の意味がわかりません。 これは、どのような意味があるのでしょうか? 【今までの流れ】 あることが知りたくて質問しました。 そのページは、こちら http://okwave.jp/qa/q7300031.html 教えていただいた、正規表現で、「出来た、出来た」と喜んで、ベストアンサーとして質問を締め切りました。 正規表現って、言語などの環境により、多少の違いがありますよね? そこで、phpの正規表現を勉強しようと、その正規表現を見ました。 しかし、なぜ、これらの文字があるのかわかりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現の表現パターンについて教えて下さい。

    こんばんわ、正規表現を使ってある文字列を検索するプログラムを勉強していたのですが、 eregi('(http://|https://)[a-z0-9./_\-]+',第二引数、第三引数) となっていたのですが、第一引数の最後の + の部分はどうゆう意味があるのでしょうか? 僕の理解では[ ]の間が検索する正規表現のパターンだと思っているのですが、、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現

    Java 5.1 java.util.regex.Pattern java.util.regex.Matcher を用いてHTMLのTABLEを抽出したいのですが、ヒットしません。正規表現のパターンはどうしたらいいのでしょう? パターン: < *table.*?>[\s.]*?< */table *?> 検索対象: … <table border=1 width=200> <tr><th>AA</th><th>BB</th></tr> <tr><td>CC</td><td>DD</td></tr> <tr><td>EE</td><td>FF</td></tr> </table> … で、TABLEタグを含むTABLE全体を期待したのですが全くヒットしませんでした。 ちなみに * <table …>と</table>単体ではヒットします。 * ソースから改行文字を取り除いて一行テキストとした場合にはヒットします。 これらのことから、改行文字がマッチしていないことが原因かと思うのですが、パターンの正規表現についてご教授願います。

    • ベストアンサー
    • Java
  • 正規表現で単語以外に使われている文字を検索した

    タイトルどおりなのですが、英文のテキストがあり、 OCR処理をしているので、数字のゼロがオーになっている箇所があります。 その部分を検索したいのですが、 正規表現で単語以外に使われている文字(オーやエルなど)を 検索する方法というのはありますでしょうか? いろいろな正規表現サイトを見て勉強はしてみたのですが、 どうしても作ることができず質問させてもらいました。 どなたかご教授願います。

  • 正規表現で特定の単語を除外したい

    javaという単語で検索するときjavascriptのjavaがマッチしてしまうのが煩わしいです。 正規表現で、javascriptという単語を含まず javaを含む行をマッチさせたい場合パターンはどのように書くものでしょうか?

    • ベストアンサー
    • Java
  • 改行を正規表現での置換のあとで元に戻す。

    あるテキストデータを一行ごとに読み込んで、chompで改行をはずして結合し、一つの長い行にしてから、正規表現で文章中の単語を(かなり多く)置換したとします。置換したあとのデータを、元データと同じ改行位置で改行をしたいのですが、なにか簡単な方法がありましたら教えて下さい。

    • ベストアンサー
    • Perl

専門家に質問してみよう