BLOG

ブログ

2022/03/28 技術系

【PhpStorm】正規表現が使えるテキストエディタでグループ化を使って置換する

この記事を書いた人 M.B

正規表現が使えるテキストエディタで、グループ化を利用した置換って便利だな〜と感じたので、今回はその一例をご紹介いたします。

はじめに

cpコマンドを作成していた時、コピー元とコピー先のパスを誤って逆に書いてしまった、入れ替えたい。。。

誤り

cp ~/xxxx/aaa/bbb/ccc/ddd/eee/ffff.php ~/yyyy/zzzz/ggg/hhh/iii/jjj/kkk/ffff.php
cp ~/xxxx/aaa/bbb/ccc/ddd/eee/gggg.php ~/yyyy/zzzz/ggg/hhh/iii/jjj/kkk/gggg.php
cp ~/xxxx/aaa/bbb/ccc/ddd/eee/hhhh.php ~/yyyy/zzzz/ggg/hhh/iii/jjj/kkk/hhhh.php

正しい

cp ~/yyyy/zzzz/ggg/hhh/iii/jjj/kkk/ffff.php ~/xxxx/aaa/bbb/ccc/ddd/eee/ffff.php
cp ~/yyyy/zzzz/ggg/hhh/iii/jjj/kkk/gggg.php ~/xxxx/aaa/bbb/ccc/ddd/eee/gggg.php
cp ~/yyyy/zzzz/ggg/hhh/iii/jjj/kkk/hhhh.php ~/xxxx/aaa/bbb/ccc/ddd/eee/hhhh.php

上記のようなものを複数行を一気に修正したい時、これまではShift+Optionキーで複数のカーソルを挿入し編集するという方法をとっていました。
PhpStorm:複数のカーソルと選択範囲

しかし行数が多いと手作業で修正するのは面倒ですよね。そんな時は正規表現を使った置換をすると便利だよと教えていただきました。

環境

macOS 11.4
PhpStorm 2021.2.3

正規表現のグループ化

今回は正規表現のグループ化という方法を使って置換を行ってみます。
コピー元とコピー先のパスを入れ替えるには、PhpStormでは下記のように指定します。

  • 検索フィールド → cp (.*) (.*)
  • 置換フィールド → cp $2 $1

まず検索フィールドの(.*)について説明します。

.
任意の1文字を意味する特殊文字(メタ文字)

*
0文字以上の任意の文字列を意味するメタ文字

.*
つなげると、任意の1文字+0文字以上の任意の文字列、ということになります。

(.*)
このように()で括ると、複数の文字列をグループとしてまとめ参照できるようになります。


続いて置き換えフィールドの$2 $1について説明します。
今回のパターンでは、1つ目に参照しているグループを後ろに、逆に2つ目を前に持ってくることが目的です。
ですので順序を入れ替えて$2 $1と指定しています。

PhpStormでは置き換え後の結果をガイド表示してくれます。親切ですね。

実行結果

パスの置換ができました👌

まとめ

今回はシンプルなグループ化でしたが、使いこなせると作業効率をUPできそうです。
正規表現はなかなか奥が深くて完璧なものを書くのは難しいと感じますが、簡単なものから積極的に使ってみて慣れていきたいなと思います。



株式会社ウイングドアは福岡のシステム開発会社です。
現在、私達と一緒に"楽しく仕事が出来る仲間"として、新卒・中途採用を絶賛募集しています!
ウイングドアの仲間達となら楽しく仕事できるかも?と興味をもった方、
お気軽にお問い合わせ下さい!

アーカイブ