さくらエディタでハイフン無しの郵便番号にハイフンを入れる


やった理由

新しい年賀状のアプリに以前使っていたアプリで出力した住所録のcsvをアップロードしようと思ったところ、以前使っていたアプリから出力したファイルの郵便番号にはハイフンが入っていなかった。
新しいアプリに入れる際、条件に「郵便番号(ハイフンあり)」となっていたため、楽に一括でハイフンを入れたかった。

実施イメージ

実施前

9000000
9010154
9000002
9020067
9000029

実施後

900-0000
901-0154
900-0002
902-0067
900-0029

さくらエディタの設定

設定項目 設定内容
置換前 (^\d{3})
置換後 $1-

説明

置換前

設定項目 設定内容
^ 文字の先頭
\d 10進数字
{3} 直前のパターンの n 回の繰り返し(今回は10進数字(\d)が3文字)
() パターンをグループ化

上記の検索により、行の先頭から数字3文字を検索します。

置換後

設定項目 設定内容
$1 パターン1つ目をそのまま使う
- ハイフン(-)を入れたいため、設定

上記の置換により、置換前で検索(^\d{3})した数字3文字の後ろにハイフン(-)を付けることができます。

ハマったポイント

いっつもハマるんですが・・
置換前に設定した内容をそのまま置換後に使う(置換後に「^\d{3}-」を設定)と、

^d{3}-0000
^d{3}-0154
^d{3}-0002
^d{3}-0067
^d{3}-0029

と悲しい結果に。
そのまま正規表現を置換後に使うと、文字列として置換されてしまうので、置換前に検索をグループ化して、検索結果を置換語に持ち回る、みたいなイメージですかね。

最後に

郵便番号の修正なんて多分年に1回しか使わないだろうなぁ…と思いつつ、ある数字の文字列の間に何かを入れるをしたい場合に使えるかな~と思います。

Qiita初投稿で、Markdownについて調べたり、設定内容を調べたりして頭の整理になりました。

参考にしたページ様

まれによく使う正規表現
正規表現で置換時にマッチした文字をそのまま使う
Markdown記法 チートシート