• ベストアンサー

VBSで正規表現キーワード複数は?

すみません、VBSの正規表現で改行をまたぐ検索をしたいのですが キーワードが複数の場合はどう書けばいいのでしょうか? 例:xxxxxabcxxxxxxxx改行 xxxxxefgxxxxxxxxxxx改行 xxxxxxLxxxx xは不定期文字 キーワード abc , efg , L .*abc[^efg][^L]*efg*L.*とやってもだめでした。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

devidさん、「どのような結果が欲しいのか」の説明を書き忘れてますよ? それと例題には「期待する結果」も必ず添えてください。 また、例のパターンが複数ある場合は出来るだけ例示してもらえないと十分な回答はできません。 前回 http://okwave.jp/qa/q7987370.html の続きと推測し、次のような条件と考えました。 例: xxxxxx改行 xxxxabcxxxxxLxxx改行 xxxxxxxxefgxxxxx改行 xxxxxxLxxLxxxxxx改行 yyyyabcyyyyyyyyy改行 yyyyyyyyefgyyyyy改行 yyyLyyyLyLyy (a) 複数行の中にabc、efg、Lの順で存在するとき、abcがある行の行頭からefgの後の最初のLまでをマッチさせたい。 結果:2箇所にマッチ 1. xxxxabcxxxxxLxxx改行 xxxxxxxxefgxxxxx改行 xxxxxxL 2. yyyyabcyyyyyyyyy改行 yyyyyyyyefgyyyyy改行 yyyL (b) 上記の条件に加え、abc~efg間にLを含む場合はマッチさせない。 結果:1箇所にマッチ yyyyabcyyyyyyyyy改行 yyyyyyyyefgyyyyy改行 yyyL なお以下のような例では、意図しない結果となる場合があります。 例: xabcxefgxLxxabcx改行 xxxxefgxxxxxLxxx改行 結果:1箇所にマッチ xabcxefgxLxxabcx改行 xxxxefgxxxxxL -------------------------------------------------------- S1=_ "xxxxxx" & vbCrLf &_ "xxxxabcxxxxxLxxx" & vbCrLf &_ "xxxxxxxxefgxxxxx" & vbCrLf &_ "xxxxxxLxxLxxxxxx" & vbCrLf &_ "yyyyabcyyyyyyyyy" & vbCrLf &_ "yyyyyyyyefgyyyyy" & vbCrLf &_ "yyyLyyyLyLyy" & vbCrLf &_ "xabcxefgxLxxabcx" & vbCrLf &_ "xxxxefgxxxxxLxxx" Set R=CreateObject("VBScript.RegExp") R.Global=True R.Pattern=".*abc(.|\n)*?efg[^L]*L" '(a) 'R.Pattern=".*abc[^L]*efg[^L]*L" '(b) Set M=R.Execute(S1) S2=M.Count & "箇所にマッチ" For I=0 to M.Count-1 S2=S2 & vbCrLf & vbCrLf & "Index=" & I & vbCrLf & M(I) Next WScript.Echo S2

devid
質問者

お礼

申し訳ございません。 3か所のマッチが必須になりまして、このたびは有難うございます。 b)のパターンうまくいきました。 有難うございます。

関連するQ&A