• ベストアンサー

さくらエディタでGrep検索する時の正規表現

さくらエディタでGrep検索する時の正規表現 「ABC」が含まれていて「DEF」が含まれない行という正規表現は どのように指定すればよいのでしょうか?

noname#256464
noname#256464

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

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

^(?!.*DEF)(?=.*ABC).*$ かな? 否定先読みらしいです。

noname#256464
質問者

お礼

正しく目的の動作が出来ました。 ありがとうございました。 しかしこれは理解するのが難しいですね。 正規表現の書式を見ながらゆっくり解読します。

関連するQ&A

  • サクラエディタの正規表現での置換

    サクラエディタの正規表現での置換の方法について教えて下さい。 行の末尾が数字で終わらない行の改行コードを削除したいと考えています。 ---------- 元ファイル ---------- 000abc123 777def 456 333ghi789 222jk+ 111 ---------- ---------- 加工後 ---------- 000abc123 777def456 333ghi789 222jk+111 ---------- 「置換前」は『[^0-9]\n』を入力することで検索できましたが、 「置換後」に何を設定すれば良いのかわかりません。(または「検索対象」の設定を変える必要があるのかなど) 例えば置換後に何も設定しないと「777de456」とfが消えてしまうため、”f”を残した上で改行コードを削除したいのですが その方法がわかりません。 よろしくお願いいたします。

  • 単語を抽出する正規表現

    単語を抽出する正規表現を教えてください。grepを使うと、「○○を含む行」がすべて抽出されますが、下記のように単語だけを抽出したいのですが、どうすればいいかご存知の方がいらっしゃいましたら、教えてください。 --- ABC DEF GHIJ AB CDEF GHIJK ABCDE FGH I JKL 上記からGH始まりの単語だけを抽出したいです。 1行目と2行目のGHIJとGHIJKの2つだけが結果として欲しいです。1行目と2行目全体が出てくるのではなくて。 Windowsでは、エディタは秀丸を使ってます。 Windowsで不可能なら、UNIX上で実施することも考えていますが、Windowsのエディタ上で実行できる正規表現の文などありましたら教えてください。

  • さくらエディタでの正規表現マクロ

    正規表現でタブ区切りの文字列の順序を入れ替える作業を試みています。 AAA BBB CCC PPP QQQ RRR のような文字列を BBB CCC AAA QQQ RRR PPP のように2列目、3列目、1列目のように順番を入れ替えたいです。 VBScriptで1行ずつ読み込み、タブを区切り文字として、配列に放り込み、配列の順番を指定して出力すればなんとか対応できるのですが、どうしてもさくらエディタで実装したいのですが、正規表現を駆使して対応できないものでしょうか? 検索により、パターンにマッチする部分は正規表現で2列目とか3列目というのは書けるのですが、パターンマッチだけで、置換後の文字列に変数などを使用できず苦しんでいます。 正規表現を用いていれればいいし、無理なら、さくらエディタで秀丸のように配列やFOR文などを使いたいのですが、使い方がわからず、質問しました。 ご存知の方がいらっしゃれば、教えてください。

  • 正規表現で「除く」

    windows用のエディタの「VIVI」というのを使っています。 grepで「2002/09/01」という文字列を含まないテキストを検索したいのですが、正規表現での検索の方法を教えていただけないでしょうか。 #どのエディタも同じではないかもしれませんが。 #自分は、正規表現のことは素人です。単に上記条件の日付のみを変更して使いたいだけ・・ (^^;

  • 「マッチしない」正規表現の書き方

    正規表現について、おたずねします。 文字列 abc,def,ghi のいずれかにマッチする正規表現は (abc|def|ghi) ですよね。 それでは、「abc,def,ghi のいずれにもマッチしない」正規表現は、どう書けばいいのでしょうか? あちこち調べましたが、どうしてもわかりません。 ただし、if $a =~ /(abc|def|ghi)/ などで、=~ を !~ に直す、というのはナシです。あくまでも右辺の式の中で表現したいのですが…

  • 秀丸の正規表現(HMJRE.DLL V1.92)で、

    秀丸の正規表現(HMJRE.DLL V1.92)で、 以下のことが可能かどうか教えてください。 ある2つの文字列のいずれも含まない行を 正規表現とGREPで抽出したいのです。 (ほかの手段でもかまいません) たとえば AAAA ABCDEF BCDEFG EFGHI といったテキストデータがあった場合 "ABC"と"DEF"のいずれも含まない行であれば AAAA EFGHI を抽出したいのです。 以上、よろしくお願いします。

  • c#の正規表現がうまくいきません

    c#の正規表現がうまくいきません 以下のhtmlから指定の文字列を抜き取ります(htmlは適当です) ---------------------------------------- <select class="iiy_name_list"> <option value="1347">abc</option> </select></td> <select class="sug_name_list"> <option value="761">def</option> </select></td> ---------------------------------------- 2行目の"abc"、5行目の"def"の2つをキャプチャで得たいのですが、 @"<option\s+[^>]*>(.*)</select>",という指定では5行目の"def"しか得られません forを使って2回のループで一つ目の変数に"abc"二つ目の変数に"def"を入れるには どうしたらよいのでしょうか? 以下のページを参考にしたのですが、うまくいきません… http://uchukamen.com/Programming1/RegEx/index.htm よろしくお願いします。

  • 正規表現でマッチさせたい文字列の指定方法

    正規表現でマッチさせたい文字列の指定方法について こんにちは。正規表現について教えてください。 秀丸エディタでgrepする時に先頭行に 『ファイル名(行数): 』という文字列が 先頭行に入りますが、これを正規表現を使用して消したいと思っています。 具体的には以下のような表現ですが、どのように指定するのが正しいでしょうか。 いくらかテストしているのですが、なかなかうまくできず困っています。 消したい文字列 test.log-110411-01.bak.text(38): よろしくお願いします

  • Rubyにおける正規表現(一致しない)

    Rubyを使って、テキスト処理をやっています。 どうしても、うまく行かないところがあります。 サジェスチョンをお願いします。 正規表現にて、 2つの条件フラグが成立していて、かつ、特定の文字列を含まないという条件です。 1行の内容は、textに入っています。 if (myFlag1==1) && (myFlag2==1) && (!/abc def/) then xxxxxxxx end (!/abc def/)は、perlでの表現です。Rubyでは、少なくとも (!/abc def/=~text) かな、と考えましたが、ダメでした。 (/abc def/!=text) でも、だめでした。 宜しくお願いいたします。

  • 秀丸の検索・置換の正規表現の最短一致の挙動が変です

    秀丸の検索または置換の正規表現の 最短一致での挙動ですが、 /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz の先頭にカーソルを置いた状態で、 (質問1) 正規表現のチェックボックスをチェックして /.*$ で検索すると /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されると思うのですが 実際には /def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます。 なぜでしょうか。 (/abc/.*$とするとカーソルがある /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz ではなく次の行以降の /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます?) (質問2) 正規表現のチェックボックスをチェックして /.*?$ で検索すると最短一致となるため /uvw.xyz が検索されると思うのですが 実際には /def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます。 なぜでしょうか。 (なお、/[^/]*$では/uvw.xyzが検索されます)