• ベストアンサー

正規表現で改行が3個続いてたら、それを削除する書き

検索とか置換えで、正規表現で、改行が3回続いていたら、それを削除する書き方ってあるでしょうか? 試して見てるのですが、改行が全部消えてしまい、うまく思い通りにいきません。 検索:^\n 置換: とかだと、改行が全部なくなってしまいます。 ^\n\n\n$ だと、ヒットしません。 改行が続いていて、それを3行だけ取り除くなんていうのは、できないもんでしょうか。 文章の中にあります。 行頭に半角空白,改行と続くのもありますが、それはヒットしないように。      

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

  • ベストアンサー
  • ude_T
  • ベストアンサー率41% (15/36)
回答No.1

検索文字列 \n\n\n(.+?)\n 置換文字列 \1\n 検索文字列の()の中身の値を置換文字列の\1で参照する必要があります こちらでは動作確認できましたが、正規表現はエンジンみたいなものがあってそれによって 微妙に違うので質問者様が使用しているものでうまく動くかわかりません 上記のような値を保持することを後方参照とよびますので、うまく動かなかったら 調べてみるなりまたここで質問してもらうなりしてもらえればと思います (\1でなくて$1でするとうまくいくかもしれません)

orenzi1
質問者

補足

ありがとうございます。 思い通りに削除されました! まことにありがとうございました!

その他の回答 (1)

  • asciiz
  • ベストアンサー率70% (6633/9397)
回答No.2

これならばどうでしょう。 検索文字列(正規表現) 「(\n)\1\1」 置換文字列 「」(無し) ( ) で登録した文字列をすぐ次の \1 で使うので、(any)\1\1 は、any が三つ繋がっているもの、という表現になります。 ちなみに ^\n\n\n$ がヒットしないのは、「^」が行の頭で、「$」が行の終わりを表す、すなわち、改行\nを除いた中身に対して働くからでしょうね。 行というのはそもそも\nで区切られているわけですから、自己矛盾した正規表現になってしまって解釈不可能なんだろうと思います。

orenzi1
質問者

補足

ありがとうございます。なるほど解釈がなかなか難しいものですね。 紙コピーのソフトの中で作業しているのですが、 ヒットしませんでした、、、むずかしいですね。。。 秀丸エディタでもヒットしませんでした。

関連するQ&A

  • 3回以上の改行を2回にする正規表現は?

    タイトルどおり3回以上改行が続けば、2回にまとめる正規表現を考えています。 処理系は秀丸を使っています。 [第1案] 検索:\n\n+ 置換:\n\n [第2案] 検索:\n{2,} 置換:\n\n の2つを考えたがいずれも失敗。 他の言語でも汎用的に使えるように正規表現を希望ですがマクロでも可。 秀丸に限らず他のソフトでの解もありますね。 かなり頻繁に使うので何とか自動化したいです。

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

    Perlとは関係ないのですが、正規表現での置換ができるエディタで改行二つを一つにしたいです。 置換前 \n\n 置換後\n としてみたのですがうまくいきません。まちがってたら教えてください。 CRLFとか気にしないといけないのかな。

    • ベストアンサー
    • Perl
  • 正規表現の置換(EmEditor)

    Fireworksで書きだしたhtmlをEmEditorで修正中です。 name="●●●" を一括削除しようと正規表現を使った置換を試みていますが上手く出来ません。 検索する文字列に入れるサンプル文字を教えて頂けませんか。 ■検索したい文字列例(行頭に半角スペースあり) (半角スペース)name="c123_r4_c6" (半角スペース)name="c123_r5_c5" (半角スペース)name="c123_r6_c4" などです。 全てに共通するものは name=""、c123、_r、_c です。 4、5、6 の位置にある数字は変わります。 ■置換後の文字列 空白 (検索したい文字列の行頭半角スペースも削除) よろしくお願いします。

  • 正規表現による改行の置換

    Windowsで正規表現ができるテキストエディタ(NoEditer)を使っており、次のような改行で区切られた文を最後のピリオッドまでをつなげたいと思っています。例文ではX,Y,Z.の直後には改行が入っており、目的はAaaaXBbbbYCcccZ.と一文につなげることです。 [例文] AaaaX BbbbY CcccZ. 正規表現で \n[^(\.\n)] としてを空欄に置換すると2行目以降の頭が消えてしまいます。---> AaaaXbbbYcccZ.  文頭の文字が消えずつなげる方法を教えて下さい。

  • 秀丸の改行削除もしくは置換

    秀丸で改行だけを削除したいと考えています。 正規表現で\nで置換できる、ということは知っています。 下記のようなケースで、一番左端にある改行だけを 削除して、詰めたいのですが…何かよい方法はないでしょうか? よろしくお願いします。 ※何万行とあります。 ※間隔に規則性はありません。 ----------------------- ↓ ↓ ○○○↓ ↓ ↓ ↓ ××××↓ ↓ ----------------------- //////////////// 最終的に下記のような形にしたい ○○○↓ ××××↓

  • 正規表現で特定文字列を含まない行を削除したいのですが

    テキストエディタ mi で正規表現のより「※補足」という文字列を含む行だけ残して他の行を削除しようとしています。 具体的には、 検索文字列 ^(?!.*\※補足).*$ 置換文字列            ← 空白 としてやっているんですが、例えば   なんとかかんとかで何やらが何として…   ※補足:よくわかりません   ※補足:質問します というテキストを上の方法で全置換すると何も起きません。 そこで試しに 検索文字列 ^(?!.*\※補足).*$ 置換文字列 ----- としてみました。 この場合、本当なら   -----   ※補足:よくわかりません   -----   ※補足:質問します となることを期待していたのですが、実際は   -----なんとかかんとかで何やらが何として…   ※補足:よくわかりません   -----   ※補足:質問します となってしまい、要するに「※補足」という文字列が含まれない行は正しく見つけてくれるものの、含まれていない行については、その行丸ごとを置き換えるのではなく行頭に置換文字列を付加するだけになってしまいます。 これは、何がどう悪いのでしょうか? ちなみに、こちらのサイトで「テキストで特定の文字列を含む行を削除」とQ&Aを検索すると、私の場合で言えば「^.*※補足.*\n」→「」(空白)という置換えで可能というご回答が見つかるのですが、miの場合、これでは「※補足」という文字列が含まている行も含まれていない行も見つけてくれませんでした。 どう直せば目的が達成されるか教えて頂けないでしょうか? どうかよろしくお願い致します。

    • ベストアンサー
    • Mac
  • サクラエディタの正規表現での置換

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

  • 改行を含む正規表現について

    すみません。どこのカテゴリで質問してよいのか判らなかったのですが 正規表現で改行を含むパターンはどの様に検索/置換すればよろしいのでしょうか? 例えば はじめ ↓ ↓ ↓ おわり はじめ ↓ おわり はじめ ↓ ↓ ↓ おわり の様に はじめからおわりまでをの複数の行数を含む パターンを検索するにはどう表記すればよいのでしょか ちなみに秀丸では はじめ(\n.*)*おわり では検索できませんでした。 ご存知の方 手ほどきの程よろしくお願いします。

  • 秀丸エディタの正規表現

    秀丸エディタの正規表現 これから述べる置換処理について教えてください。 条件を表現します。 まず半角空白文字を _ このように全角アンダースコアであらわします。 そしてマッチさせたいSTRINGは _ このように半角空白文字がそれ以外の文字に前後をはさまれている状態ではなくて、 、 __ このように半角空白文字二個もしくは二個以上続いたものが半角空白文字以外に挟まれているパターンです。 。 ちなみに置換後の文字列は __ ですつまり空白半角文字列二個です。 よってこの質問は次のようにも言い換えられます。 。 検索文字列 半角空白文字二個以上 を置換後文字列 半角空白文字二個に置き換える。もしくは、半角空白文字三個以上を 置換後文字列 半角空白文字二個に置き換える。 というのが質問です。おねがいします。 すみませんつけたしです。上記を実現する正規表現を教えてください。

  • 改行を正規表現での置換のあとで元に戻す。

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

    • ベストアンサー
    • Perl

専門家に質問してみよう