• ベストアンサー

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

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とするのがこつのようですね。