秀丸の正規表現による置換と並び替え 実例サンプル解説集

スポンサーリンク

他のエディタの置換解説ページはこちら

秀丸エディタを使った置換(変換・置き換え)の実例集です。正規表現による置換(regex replace)と入れ替えをマスターすれば、面倒な作業を大幅に短縮することができるようになります。

スポンサーリンク

秀丸での置換の方法

置換ウィンドウの呼び出しショートカット

ctrlを押しながらRを押して表示される以下のウィンドウで実行します。

検索の右入力欄に置換前の文字列、置換の右入力欄に置換後の文字列を入力します。正規表現のチェックを入れてください。

検索・置換用メタ文字

. 任意の一文字 * 直前の0回以上の繰り返し
    + 直前の1回以上の繰り返し
    ? 直前の0~1回の繰り返し
    {n} 直前のn回の繰り返し
[~] ~のいずれか1文字 [^~] ~に含まれない1文字
[AB] AまたはB    
[0-9] 数字1文字    
[a-f] a,b,c,d,e,fの1文字    
\n 改行 \d 半角英数字
\t タブ \w 半角英数字とアンダースコア
\s 空白 \l 半角英小文字
    \u 半角英大文字
n,t,s,d,w,l,u等を\Dのように大文字にすると、それ以外(否定)となる。\Dは半角英数字以外の文字ということ。

※\は日本語キーボードでバックスペースの左隣、¥のことです。

検索のショートカットは、ctrlを押しながらFを押して実行します。メタ文字を用いて、色々と検索を試してみましょう。

\f 置換用区切りメタ文字 \ 置換後文字は \0~ で呼び出します。$ではありません。

通常の置換

改行をカンマ(コンマ)に置換する(カンマがすでに存在している場合のCSV化)

改行コードを変換(置換)する方法について解説します。元々存在していたカンマを“,”とし、改行コードを変換したカンマは ,と表示することにします。必ず、事前にカンマを”,”にする2段階置換を実施してください。

置換前の文字列   目的とする文字列
43,279
532aa
43″,”279,532aa
1 検索 ,
置換
“,”
2 検索 \n
置換 ,
  • 改行は \n です。
  •  ,が文中にある。この段階で\n置換をすると、置換後の文字に,が発生しデータ処理に不都合が生じる。2段階置換を行う。前段階として、,“,”に置換をしておく。こうしておくことで、ほとんどのアプリなどで,をCSVの区切り文字ではなく、文字列として判断できるようになる。ただし、場合によっては対応しない場合もあるため、そういった場合は、別の文字列、例えばCCCなどに置換しておく。こういった前処理をしておかないと、エクセルなどで読み込んだときにセルがそろわない事態になります。
  • \nを使って改行を検索し、,に置換する。
  • 事前にカンマを“,”とする二段階置換をすることで、後の作業での予期せぬトラブル発生を防ぐことができる。

置換前の文字を置換後にも使用する

桁表現のカンマ(コンマ)を削除する

置換前の文字列   目的とする文字列
1,200 1200
1 検索 [1-9]\f,\f[0-9][0-9][0-9]\f
置換
\0\2
  •  ,を消すだけの置換では他の部分に影響が出てしまう可能性があるため、おすすめしません。
  • \fを使って置換前の文字を置換後の文字に使用する方法をとる。\fによって文字列を区切っていると考えます。以下は\fと対応する\0、\1~のイメージ。
    \0 \f \1 \f \2 \f \3 \f \4
  • [1-9] は1~9の数値を意味します。0から999までの数は[0-9][0-9][0-9]と表現し、[0-999]という書き方はできません。テキストエディタは1文字単位で判断をするからです。
  • \fは置換前の文字を置換後に使用する際に使用します。[1-9]\f[1-9]に対応する文字が\0,\f,対応する文字が\1[0-9][0-9][0-9]\f[0-9][0-9][0-9]に対応する文字が\2となります
    1 , 200
    [1-9]\f ,\f [0-9][0-9][0-9]\f
    \0
    \1
    \2
  • 以上から、¥1を消せばよいことがわかり、置換文字列は \0\2で良いことがわかります。

文章を入れ替える(1文字)

置換前の文字列   目的とする文字列
私にとってAはBです 私にとってBはAです
1 検索 私にとって\f.\fは\f.\fです
置換
\0\3\2\1\4
  •  .をは任意の1文字を意味します。それはCでもFでも数字でも対応します。
  • \fを使って置換前の文字を置換後の文字に使用する方法をとる。(上の方法と同じ)
    私にとって A B です
    私にとって\f .\f は\f .\f です
    \0 \1 \2 \3 \4
    \0 \3 \2 \1 \4
  • 以上から、順番は \0\3\2\1\4 となることがわかる。
  • です」は置換判定になくても良いが、「私にとってAはBではない」という文章(文字列)があった場合、その文字列も置換してしまうため、「です」を加えた。誤判定対策です。
  • 予期せぬ置換が起こることがあるため、できる限り長い文字列にしたほうが良い。

文章を入れ替える(複数の文字列)

置換前の文字列   目的とする文字列
私にとってAAはBBBです 私にとってBBBはAAです
1 検索 私にとって\f.+\fは\f.+\fです
置換
\0\3\2\1\4
  •  .\fの間に+を加えれば良い。加えることで\f前、又は\f後の文字までの全ての文字を対象にします。.+任意の一文字を1回以上という意味です。
  • \fを使って置換前の文字を置換後の文字に使用する方法をとる。(上の方法と同じ)
    私にとって AA BBB です
    私にとって\f .+\f は\f .+\f です
    \0 \1 \2 \3 \4
    \0 \3 \2 \1 \4
  • 以上から、順番は \0\3\2\1\4 となることがわかる。
  • です」は必ず加えなければなりません。加えない場合、以下のようになってしまいます。
    私にとって AA BBB です
    私にとって\f .+\f は\f .+\f
    \0 \1 \2 \3

    つまり、結果として、 私にとってBBBですはAA となってしまう。

  • 出来る限り文字を加えることは予期せぬ置換を防ぐためにも必要なことです。

その他の置換サンプル集

ピリオドの置換

置換前の文字列   目的とする文字列
45.232 45P232
1 検索 \.
置換
P
  •  .の一文字、ピリオドのみを検索すれば良いように思われますが、ピリオドは正規表現で使用される文字ですから、全ての文字列と判断し、結果としてすべての文字を一つ一つPに置換して 45.232 → PPPPPP となってしまいます。ちなみに、.+ とすると 45.232 → P となる。
  • 正規表現のチェックを外せば、.だけでも置換することができます。
  • そこで、\を用います。\.とすれば、.を正規表現用の文字ではなく、単なるピリオドとして扱われるようになります。
    45 . 232
      \.  
    45 P 232

スペース(空白文字)

置換前の文字列   目的とする文字列
スペースが” “ スペースが “SPACE”
1 検索 ” “
置換
SPACE
  • 空白は” “、つまり検索欄にスペースを押して空白文字を入力します。
  • \sというものもありますが、これはタブとスペース(空白文字)、そして改行も含みます。ですから\sは期待通りの結果にはなりません。

タブの置換

置換前の文字列   目的とする文字列
タブが”   “ タブが”TAB”
1 検索 \t
置換
TAB
  • タブは\tとします。

改行の削除

置換前の文字列   目的とする文字列

千葉県

市原市

千葉県市原市
1 置換前 \n
置換後
  • 改行コードは\nとします。
  • 置換後について何も入力しなければ、そのまま文章は繋がり、「千葉県市原市」となる(改行の削除)

置換を用いて文字の交換をするテクニック

置換はあくまで、文字を別の文字に置き換える動作です。では、文字を入れ替えるにはどうしたらよいでしょうか。つまりAをBにし、BをAにする方法です。ただ、そのままA→B、B→Aとすると、AもBが全てAになってしまいます。

そこで、一旦Aを別の文字に置き換えを行います。

  1. A→XXXXX など絶対に登場しないであろう文字列に、置換(退避させる)します。
  2. B→A に置換します。
  3. XXXXをBに置換します。

このようにすることで、完全に文字の置き換えをすることができます。このテクニックは様々な機会に活用できるので使ってみてください。