• ベストアンサー

EmEditorでの置換方法

EmEditorでの置換方法 EmEditor(フリー)で、カッコ内の文字列を削除したいのですが、方法がわかりません。 カッコは全角で、カッコも含めて削除したいのです。 文章の中にあり、カッコの中の文字列は1文字の場合もあれば4文字など不特定多数です。 そのような場合の検索方法はありますでしょうか? ヘルプを見たり、調べたりしましたが分かりませんでした。 よろしくお願いします。

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

  • ベストアンサー
  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.5

EmEditorでは+や*の後に?をつけることで最短一致で検索します。 つまり (.*?) です。

LALAPAR
質問者

お礼

本当だ!! こちらでもできました!!! ありがとうございます。 EmEditorのヘルプでは「?」が最短一致とはわからなかったです。 正規表現、奥深し!

その他の回答 (4)

noname#194317
noname#194317
回答No.4

正規表現は最長範囲にマッチしようとするので、(.*)では予期しない置換が発生します。例えばこういう文字列を先の正規表現で置換すると… はじめ(123)なかほど(456789)おわり -->はじめおわり になってしまいます。これを避けるには、文字クラスを組み合わせる必要があります。こんな感じで。 ([^)]*) この正規表現の意味は、 全角開き括弧(で始まり、 全角閉じ括弧)ではない文字の0回以上の繰り返しが続き、 全角閉じ括弧)で終わる となります。これなら、置換結果は次のようになりますよ。 はじめ(123)なかほど(456789)おわり -->はじめなかほどおわり perlとかだと、正規表現を最長一致にするか最短一致にするかを選べるので、最短一致にしておけば(.*)でも狙いどおりの結果にできます。また、昔のMIFESエディタは最初から最短一致でした。ただ、最初の失敗の例のような置換をわざとさせたい場合もあるので、正規表現の書き方で回避するのがよいでしょうね。

LALAPAR
質問者

お礼

できました!!! ありがとうございます。 これでほぼ期待通りの動作です。 でも、入れ子はダメですね (はじめ(123)なかほど)おわり --> おわり ただ入れ子の量が少ないので何とか対処できそうです。

回答No.3

No.2さんが回答している正規表現で対応できるかと。 全角括弧()の間に「 .* 」を入れるだけです。 正規表現について参考になるサイト ・今回関連するもの http://www.mnet.ne.jp/~nakama/regexp3.html ・その他 http://www.mnet.ne.jp/~nakama/

LALAPAR
質問者

お礼

教えていただき、ありがとうございます。 ただカッコから次のカッコまでの間が全て削除(または検索)されてしまいました。 どうやら猿だったようなので、教えていただいたリンクで勉強してみます。

noname#198951
noname#198951
回答No.2

置換に正規表現が使えるなら (.*) で検索できると思いますが、削除というのはできるのか… 秀丸ならできるかもしれません。 カッコが半角の場合は、正規表現で使われる特殊な記号になるのて"\("と書かないといけないかもしれません。

LALAPAR
質問者

お礼

教えていただき、ありがとうございます。 ただカッコから次のカッコまでの間が全て削除(または検索)されてしまいました。

  • MRT1452
  • ベストアンサー率42% (1391/3293)
回答No.1

該当エディタの事はわかりませんが、 一般的なテキストエディタであれば、マクロを組まない限り、そういうことは不可能かと。 該当エディタでマクロが組めるかどうかは、わかりませんが。 置換はあくまで検索文字列に完全一致(または英字の大文字小文字同一視での検索)したものを置換える機能なので、不特定文字列をまとめて削除したり等の置換えは出来ないでしょう。 エクスプローラの検索のようなオールマイティ文字を利用した曖昧検索が可能ならば、可能かもしれませんが。

LALAPAR
質問者

お礼

マクロを組む方法でも良かったので、教えていただきたかったのです。 あしからずありがとうございます。

関連するQ&A