秀丸エディタでの改行を含む複数行の置換について

このQ&Aのポイント
  • 秀丸エディタでの改行を含む複数行の置換方法について解説します。
  • 検索文字列を指定して、指定した文字列を置換することができます。
  • 改行を削除せずに、全角1文字に置換する方法もご紹介します。
回答を見る
  • ベストアンサー

秀丸エディタでの改行を含む複数行の置換について

abc↓ 1行の文字列またはランダムな個数の改行を含むランダムな長さの英文文字列 def↓ を abc↓ あ↓ def↓ に置換したい場合、検索文字列はどのように指定すればいいのでしょうか? 「1行の文字列またはランダムな個数の改行を含むランダムな長さの英文文字列」は、 ee ff gg↓ の場合もあれば、 ee ff gg↓ hh iii jj↓ kk.↓ のような場合もありますが、これらすべてを全角1文字に置換したいのです。 また、この abc↓ 1行の文字列またはランダムな個数の改行を含むランダムな長さの英文文字列 def↓ は、他の文章の中に大量に埋まっていて、他の文章の体裁は崩せないため、 一括でとりあえずずべての改行を削除という方法は使えません。 お手数ですがどうぞよろしくお願い致します。

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

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

>(改行の個数がまちまちだからでしょうか・・・) はい、回答にあげた例では、真ん中の文字列を「改行を含まない文字列」 すなわち「任意の一行」という指定ですので、複数行にはマッチしません。 …すみません、質問文から「改行を含むこともある」ことを読み落としていました。 かといって、全く任意の文字列「.*」を使ってしまうと、今度は最長一致となって困ったことになります。 --------テキスト例 abc 適当な 文字列 def abc 適当な文字 そのに def --------テキスト例ここまで 上記を「abc\n.*\ndef」で置換すると、最初のabcと最後のdefにマッチしてしまい、途中は全部「あ」一文字に置換されてしまうんです。 「abc\n[^\n]*\n[^\n]*\ndef」…abc~def間が2行 「abc\n[^\n]*\n[^\n]*\n[^\n]*\ndef」…abc~def間が3行 「abc\n[^\n]*\n[^\n]*\n[^\n]*\n[^n]*\ndef」…abc~def間が4行 このように、検索文字列を増やして置換を繰り返せば、数回~10回程度で済むでしょうか…。

victorian_vat
質問者

お礼

補足のご回答をいただいてありがとうございました。 教えていただいた方法で何回か繰り返せば大丈夫そうです。 全く思いつきませんでした。 手作業よりはるかに楽で確実で、目と肩の痛みも軽減します。 ありがとうございました。

その他の回答 (1)

  • asciiz
  • ベストアンサー率70% (6637/9404)
回答No.1

置換のダイアログで正規表現を有効にして(チェックを入れる)、 検索文字列: abc\n[^\n]*\ndef 置換文字列: abc\nあ\ndef とすれば良いでしょう。 正規表現モードでは、 \n=改行 [^\n]=改行以外の任意の文字 *=直前の文字の任意個(0個以上)の繰り返し など、様々な表現が使用できます。

victorian_vat
質問者

お礼

早々にご回答ありがとうございました。大変参考になりました。 しかし、試してみたのですがうまく機能しませんでした。 (改行の個数がまちまちだからでしょうか・・・) ご回答を参考に正規表現でいろいろ試してみます。

関連するQ&A

  • 秀丸エディタで文字列の置換をしたい

    秀丸エディタの正規表現についてお教えください。 やりたいこと: 対象の文字列を含んでいない行を削除したい 例:defのみを削除したい abc def def abc ↓ abc abc どのようにすれば実現できますでしょうか? よろしくお願いします。

  • マクロ(複数文字置換)についての質問です。

    現在、ExcelのA列に置換前の文字、B列に置換後の文字が入っているシート(シート名:"辞書")があります。 そのシートを辞書的役割で使用し別のシートの内容を置換したいと考えています(現在候補が1000文字程度あり、1つずつ置換をすることが難しいです) また、完全一致のみの置換、大文字とから小文字の置換も可能にし、件数も何件存在するかわかりません。 例:ABCをabcに変換したい場合、 ○ABC→abc ×ABCDEF→abcDEF のような感じです。 しかし、1つのセルの中に空白がある場合は置換可能とします。 例:ABC DEF→abc DEF このようなことは可能でしょうか? 何卒よろしくお願いいたします。

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

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

  • エクセルの「置換」で1行の部分を2行にはできますでしょうか?

    エクセルで「検索と置換」の置換で1行のものを2行に置き換えるということは可能でしょうか? 初心者でよくわからないのですがみたところ置換は 「検索する文字列」と「置換後の文字列」ともに1行しか対応していないように見受けたのですが。 意味合いとしては例えば abc という行があったとしてその行を efg hij というような2行に交換したいというような意味合いなのですが可能でしょうか?

  • テキストエディタでの置換について

    次のようなテキストがあります。 ABC DEF_GHI J KLM NO(改行) PQ R_S TUV WX(改行)   ・   ・ これらの各行頭から“_”までをすべて削除したいのです。つまり、 GHI J KLM NO(改行) S TUV WX(改行)   ・   ・ ということを実現したいのですが、Word2002ではできないのでしょうか。 また、EmEditor Free で正規表現での置換(“^.*_”で検索“”で置換、ダブルクウォーツは除く)をやろうとしても、検索されず置換もできませんでした。 検索文字の指定が誤っているのでしょうか。 また、ただ私の目的が達成されればそれでいいので、この作業に適したフリーソフトをご紹介頂けないでしょうか。 以上、どうかよろしくお願いいたします。

  • 秀丸の置換

    いつもお世話になっています。 秀丸の置換でいろいろ検索したのですが、どうしても わからなくて質問させていただいています。 というか、私のやりたいことができるのかどうかも 不安なところなのですが・・・・(汗) 添付の画像のように2行の空白の改行の後に文章がはじまります。 その文章の始まりに●を入れたいのですが、マクロか置換で やり方はあるでしょうか?

  • 秀丸での正規表現を使用した置換

    いつもお世話になっております。 秀丸で正規表現を使用した置換処理を行いたいと思うのですが、どうしても正規表現の式が書けません。 どうかご教示下さい。 <置換前> ABC1 あAbCd++ ... ... ・先頭4文字は半角英数字の大文字固定 ・その後ろにタブ ・最後にかな、英数字、記号などの可変長の文字列 上記で1レコードです。 <置換後> ABC1 String 内容 あAbCd++ ... ... ・先頭4文字そのまま ・その後ろにタブを3つ+改行 ・続いて「内容」という文字列+改行 ・最後に可変長の文字列をそのまま+改行 「置換」の正規表現は以下だと思うのですが、英数字4文字と可変長文字列を別々にマッチさせる「検索」がどうしても分かりません。 \0 String\n内容\n\1\n どうかご教示下さい。 <環境> Ver.6.1.4

  • delphiにて●文字列置換で勝手に改行

    AnsiReplaceTextで文字列置換しているのですが、 ある改行なしの文章を置換している最中に、 勝手に改行が入りこみます。 切れる場所も決まっていて、 まず1024バイト目で切れ、 次は短く20-50バイトあたりで切れ、 また1024バイト目、次は短く…と繰り返します。 Tmemoに読み込ませた1行を取得して、 置換して戻すという作業ですが、 Tmemoに無改行の限界なんてあるのでしょうか? ないと思うのですが、改行が入りこむ理由がわかりません。 どなたか教えていただけないでしょうか。 もしくはここをチェックして、というようなアドバイスでも いただけないでしょうか?

  • 複数行をヒットさせる正規表現

    ~ 省略 ~ ==abc== ! ああ !: あいうえお ! いい !: いうえおあ ==def== ~ 省略 ~ とあった時、==abc==から==def==の間を全て取得したいのですが、 どうにも改行文字の所で止まってしまい、==abc==までしか 取得する事が出来ません。 ~ 省略 ~部分は全く同じ形式で文字列が大量にありますが、 ==abc==、==def==は1箇所にしか存在しません。 どういう正規表現をすれば上記全ての文字列を取得する事が出来るのでしょうか?

    • ベストアンサー
    • PHP
  • fpoenからの改行コードの扱いについて

    ただいまMacOSX(10以降)でプログラミングをしています。このOSでは改行コードはLFつまり、"\n"が当てはめられているはずです。(でいいんでしょ??) ///// abc.txt(改行や空白もそのまま)////// abc def ghi ///////////////////////////////////// このテキストをfopenで開き、fgetsで1文字ずつスキャンしていて"\n"にぶちあたるとある変数をインクリメントし、最後にその行数を出すというプログラムを書いてます。 この場合改行"\n"は3回あるので最終的に3+1、つまりこのテキストは4行あるということを表示できるはずなのですが、なぜか改行が1回としか認識されず結果2行のテキストとして出力されてしまいます。 いろいろ試した結果、どうやら"\n"を判断できている場所はその次が空白の行の場合だけなのです。つまり、コンピュータ的には ///// abc.txt(改行や空白もそのまま)////// abc\n ←ここは次にdefという文字列がきているので\nが認識されていない def\n ←ここしか認識されていない   \n ←同様に次の文字列がくるので認識されていない ghi ///////////////////////////////////// としか認識されていないようなのです。 なぜ\nの続きが文字列であると なぜこのようなことになるのでしょうか? \nの扱い方が間違っているのでしょうか?解決方法がおかる方がいればよろしくおねがいします。

専門家に質問してみよう