clover.blue

テキストエディタでの便利な正規表現での置換

Data
2015/03/29
Tag

何かで挟まれた値の中身だけは残して周りの記述を置換したい・・。
だけど値が違ったりしてうまくいっぱつで置換できない・・。

みたいな時ってありますよね。

Codaとかだと標準で簡単に置換できるようにその機能がついていたりするのですが、
intelliJとかSublimeTextだとどうやって書くんだろうと思いしらべてみました。

下記の正規表現を使えばうまく置換できるようです。

それぞれのエディタの置換タブを出すショートカット

  • intelliJ: Command + R
  • SublimeText: Command + Option + F(検索タブの一番左の「.*」にチェック)

SCSSの例

@include プロパティ(値);」を「プロパティ:値;」に置換するための正規表現

//置換したい文字列
@include (.*)\((.*)\);

//置換後の文字列
$1\: $2\;

二重括弧対策

2重で括弧がある場合の対策。ちゃんと使われるであろう文字列を指定します。

//置換したい文字列
@include ([\w-]+)\(([\s\w\(\)\,\./%!\$\'\"#\-\+]+)\);

このように置換したい部分を(.*)で囲み、置換後の正規表現で$1とすることでいけるようです。
$1,$2と付いているのは(.*)で囲った部分の1つ目と2つ目という意味です。

わりと作業しているとこの辺りはちょいちょい出てくるので覚えておくと便利ですね。

特定の文字列を除きたい場合

//置換したい文字列
@include ((?!notStr).*)\((.*)\);

//複数指定
@include ((?!notStr|notStr2).*)\((.*)\);

(?!notStr)のようにnotStr部分に除きたい文字列を書きます。
複数指定したい場合には|で区切ります。