• ベストアンサー

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

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

  • devid
  • お礼率34% (166/478)

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

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

  • VBS 正規表現の記号

    VBSで、一行単位で行読込みを行いましたが、特定の箇所を抜き出しがうまく出来ません。 例えば、行読込みにて下記一行が読み込まれた場合  abc "efg" abcの後の"~"の間、efgを抜き出したい場合、正規表現としてどのようになるのか、何方かご教授ください。

  • 正規表現で括弧にマッチさせたいのですが・

    Javaで正規表現を使おうとしてるのですがうまく行きません。 次のようにマッチさせたいです。 マッチさせたい文字列 : (abc)and(efg) マッチする文字列 : abcとefg マッチさせたい文字列 : (abc(efg)) マッチする文字列 : abc(efg) もしくは abc(efg)とefg とのようにまっちさせたいです。上の方はできたのですが、下の方がabc(efgとマッチしてまうのです。 いい方法を教えてください><お願いします。

  • 正規表現について

    VBSでRegExpで文字を抽出したいのですが、上手くいきません。 *****abc******** ************} *は不確定の文字で、キーワードはabcと}です。がabcの先頭行から}までの複数行を 抽出したいです。 re.Pattern = "[^*].*abc.*}" だと上手く動きません。 よろしくお願いします。

  • 文字列を含まないという正規表現は?

    お世話になります。 例えば、文字「a」を含まないという正規表現は、 "[^a]" となりますが、文字列「abc」を含まないという正規表現はどうなりますでしょうか? "[^abc]" ではだめでしたし、 "[^(abc)]" でもだめでした。 また、改行などの制御文字を含めたどんな文字でもいいという正規表現はどうなりますでしょうか? ".*" では改行などが含まれるときはだめでした。 どうかご教授のほどよろしくお願い致します。 次のサイトは参考にしたサイトです。 正規表現の解説 目次 http://www4.ocn.ne.jp/~kaerume/k2e/regex_top.html#mnu_top

  • 正規表現を教えてください。

    正規表現を教えてください。 C#で正規表現を用いた文字列検索を勉強中なのですが、うまくマッチさせることができません。教えていただけないでしょうか。 検索対象の文字列は下のようになります。 キーワード;値; 文字列中に該当するキーワードが存在する場合に、その値を取得するプログラムを考えています。しかし、私の正規表現では2つ目の「;」を検出してしまい、キーワードのみを取得することが出来ずに困っています。 見当違いの表記をしているとは思うのですがどなたかお助けください。 match = Regex.Match(line, "^(.*);"); C#初心者なものです。

  • PHPにおける正規表現について

    PHPにおける正規表現について ご教授ください。 いわゆる、対象の文字列が複数行にわたっていた場合のことです。 $data = <<< EOF ABCDE FGH EOF; $hoge = preg_match("/EF/" ,$data,$match); と上記のようなコードがあった場合 対象の文字列群から【EF】という文字列を検索したい場合、どのように記述したら 【E(間に改行)F】の文字列と一致させる事ができるでしょうか? 仮に正規表現の修飾子の【s】や【m】を用いても上記の例の場合 一致させることができないと思います。 やはり、対象の文字列群 $data の改行文字をいったん削除したものから検索 するのがベターでしょうか? 正規表現に造詣の深い方よろしくご教授ください。

    • ベストアンサー
    • PHP
  • 複数行をヒットさせる正規表現

    ~ 省略 ~ ==abc== ! ああ !: あいうえお ! いい !: いうえおあ ==def== ~ 省略 ~ とあった時、==abc==から==def==の間を全て取得したいのですが、 どうにも改行文字の所で止まってしまい、==abc==までしか 取得する事が出来ません。 ~ 省略 ~部分は全く同じ形式で文字列が大量にありますが、 ==abc==、==def==は1箇所にしか存在しません。 どういう正規表現をすれば上記全ての文字列を取得する事が出来るのでしょうか?

    • ベストアンサー
    • PHP
  • 正規表現でテキストの中身を置換したい(VBS)

    初心者で、もしかしたらすっごく恥ずかしい事を聞いているかも知れませんが・・・ テキストファイルの中を正規表現を使って検索し、指定(固定)文字列と置換したいのですが、どうもうまく行きません。 ソースは以下のような物です。 ----- Set FS = CreateObject("Scripting.FileSystemObject") Set ts=Fs.OpenTextFile("C:\Program Files\ABC\EFG.txt",1) myStr=ts.ReadAll repStr = "NG_PATH =D:\ABC\HIJ" Set objRE = New RegExp objRE.Pattern = "^NG_PATH.*=C:\\Program\sFiles\\ABC\\HIJ" objRE.IgnoreCase = True objRE.Global = True newStr = objRE.Replace(myStr,repStr) ts.Close Set ts = FS.OpenTextFile("C:\Program Files\ABC\EFG.txt",2) ts.Write newStr ts.Close ------- ●ポケットリファレンスの内容を見て、組み合わせながら作っています ^_^; ●置換対象ファイルの中をobjRE.Patternで指定している内容で検索すると見つかります。 ●置換対象ファイルの更新日時を確認すると、VBS実行時間で更新されています。 それから「myStr」や「newStr」は、任意の変数を宣言して、そっちを使う事って出来ますか?

  • 秀丸での正規表現を使用した置換

    いつもお世話になっております。 秀丸で正規表現を使用した置換処理を行いたいと思うのですが、どうしても正規表現の式が書けません。 どうかご教示下さい。 <置換前> ABC1 あAbCd++ ... ... ・先頭4文字は半角英数字の大文字固定 ・その後ろにタブ ・最後にかな、英数字、記号などの可変長の文字列 上記で1レコードです。 <置換後> ABC1 String 内容 あAbCd++ ... ... ・先頭4文字そのまま ・その後ろにタブを3つ+改行 ・続いて「内容」という文字列+改行 ・最後に可変長の文字列をそのまま+改行 「置換」の正規表現は以下だと思うのですが、英数字4文字と可変長文字列を別々にマッチさせる「検索」がどうしても分かりません。 \0 String\n内容\n\1\n どうかご教示下さい。 <環境> Ver.6.1.4

  • 正規表現で固定長に揃えたい

    正規表現で固定長に揃えたい 秀丸など正規表現のできるエディタを使用し リターンを含まない長い文字列を固定長にしたいです <例> あいうえおかきくけこさしすせそたちつてとなにぬねのはひふ ↓10文字ずつ改行 あいうえおかきくけこ さしすせそたちつてと なにぬねのはひふ よろしくお願いします

専門家に質問してみよう