• ベストアンサー

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

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

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

  • ベストアンサー
  • illashige
  • ベストアンサー率53% (305/569)
回答No.1

正規表現に詳しくはありませんが、単純に\nを検索文字列、置換文字列を空欄(なにもいれない)にすれば、ご希望の結果になると思います。

pico99
質問者

補足

早速のご回答ありがとうございました。 ご回答を頂いてからから気がついたのですが、本来質問すべきだったのは先のようなピリオドで終わる文が複数ある場合でした。(舌足らずですみませんでした。) そこで再質問ですが、 AaaX BbbX CccX. DddY EeeY FffY. とあるのを(CccXとFffYの後ろのみにピリオド(\.)がある) AaaXBbbXCccX. DddYEeeYFffY. と置換したいのです。 ピリオド(\.)が改行(\n)に続くところは除外して改行(\n)だけを検出し、つなげるため\n[^(\.\n)] を使いました。  でもAaaXbbXccX.ddYeeYffY. になってしまいA以外の文頭文字が消えてしまい、さらに2文も繋がってしまいます。  

その他の回答 (1)

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

エディタによって正規表現による検索文字列、置換文字列の指定方法に若干の違いがある上に、私は"NoEditor"を使ったことが無いので、はっきりとしたことは言えませんが、 \n[^(\.\n)] の指定だと、 改行+ピリオドではない文字+改行ではない文字 の指定になっているように思います。 "EmEditor"のように、()で括られた検索文字列のマッチした部分を、"\1"等で置換文字列として指定可能なエディタでしたら、 検索文字列:([^\.])\n   または   ([^.])\n 置換文字列:\1 で、"AaaaX+改行"や"BbbbY+改行"の末尾の"X+改行"と"Y+改行"にマッチし、"\1"で()内にマッチした文字"X"または"Y"のみに置換されて、結果的に改行が削除され、"CcccZ.+改行"はマッチしないため、置換されずそのままという置換方法が使えますが、"NoEditor"では出来ないのでしょうか? (正規表現対応のエディタならば、"\0"でマッチした文字列全体、"\1"、"\2"で()や{}で括った部分文字列の指定方法が使えると思うので、"NoEditor"のヘルプ等をご覧になってみて下さい。なお、仮に、"NoEditor"でこの方法が使えるとしてですが、エディタによって検索文字列の指定方法が若干違い、私が使っている中でも、"EmEditor"では()、"MIFES"では{}で正規表現を括るという違いがありますので、そのあたりにも注意が必要です。)

pico99
質問者

お礼

deadline様、回答ありがとうございました。 検索する文字列を ([^\.])\n|([^.])\n とし 置換する文字列を \1 とした場合 OKでした。 置換後を\1とするのがこつのようですね。

関連するQ&A

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

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

    • ベストアンサー
    • Perl
  • 正規表現で置換

    正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。

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

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

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

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

  • 正規表現置換

    はじめまして。 現在、テキストエディタで kami987koroです。(漢字、かな、英数字、半角記号、全角記号、改行、スペースを含む文字列)ありがとうございました。 という文字列を正規表現で拾いだして、置換したいと考えています。 ただ、私がその方面の知識に疎く、どう表記すればよいのか分かりません。 そこで、この分野にお詳しい方、ご教授願えませんでしょうか? よろしくお願い致します。

  • 【正規表現】改行を消す方法

    SAKURAエディタで正規表現を使えるようにしたんですが、改行の消し方が分かりません。 --------------------------------------------- a aaaa --------------------------------------------- ↓↓↓↓↓ --------------------------------------------- aaaaa --------------------------------------------- という風に置換したいんですが、どうすればいいのでしょうか? 回答の程よろしくお願い致します。

  • 文字+改行コードの置換について

    文字+改行コードの置換についてご教授ください。 テキスト内の数字「9」とそれに続く改行コードのみ置換(削除)対象にしています。 全ての改行コードが対象ではないため、下記のようにエディタ(sakuraエディタ)で指定しました。 置換前: 9\r\n ※削除したいため、置換後の欄は空欄にしています。 しかし、この設定だと置換前の文字列を置換対象として認識しません。(検索対象としても) \r\n だけだと改行コードを認識するので、文字と改行コードのセットを認識していないようです。 指定に誤りがあるのでしょうか。詳しい方ご教授お願いします。

  • テキストエディタでの置換(正規表現チェック済)と同様のことを

    テキストエディタでの置換(正規表現チェック済)と同様のことを エクセルのマクロでもしたい。 画像を添付しましたが、秀丸で置換を選択し、 検索文字列と置換文字列を入れて、正規表現チェックのチェックボックスを 選択した状態で実行するのと同様のことをエクセルのマクロで行いたいです。 正規表現混みだととても難しいです。 やりたいことはマクロで、フォルダ内のテキストファイルを置換をかけていきたいです。(テキストファイルは複数ある状態)そのテキストファイルを更新できればいいです。(別テキストで出力されてもいいです。) どなたか詳しい方、教えていただけませんでしょうか? よろしくお願いいたします。 --- 検索エディタ【秀丸】【置換】 検索【.*item1=(.*) item2=(.*) .*】 置換【\1\t\2】 正規表現チェック

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

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

  • 正規表現を教えて下さい(テキストエディタでの置換)

    いつもお世話になっております。 正規表現に関して細かい質問をさせて下さい。 例えば、G-01,T-02,F-05とあったときに、 これを、01,02,05としたいとき、 正規表現の置換で「[A-Z]-[0-9][0-9]」→「[0-9][0-9]」とすると、 "[0-9][0-9]"という文字列だけ残ってしまいます。 既存の文字列をそのまま残すにはどのようにしたらよいでしょうか? ※テキストエディタでの置換に関してです。 宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう