tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

Sublime text 2 正規表現で部分置換

例えばファイル中の

visit '/static_pages/about'

visit about_path

のように一部分だけ残して置換したい。

そのためには、マッチした部分を取得するために、取得したい文字列を括弧( )で囲む。

上記の例の場合、/static_pages/に続く文字を取得し、その取得した文字に_pathをつけたい。

ちなみにsublime text は正規表現のシンタックスにBoost Syntaxを用いている。

Perl Regular Expression Syntax - 1.47.0


正規表現は次のようになる。

 '/static_pages/(.*)'

これで/static_pagesに続く任意の文字を取得することができる。

Sublime text2でこれをやるには、

まずはShift + Command + F で下に入力欄を出す。

(現在のファイルのみを対象とする場合、Option + Command + F)

正規表現をオンにする。(左端の*印をおす) そして

Find:     '/static_pages/(.*)'

Where:    (置き換えたいファイルやディレクトリの場所)

Replace:    $1_path

右下の Replaceを押して完了。(なお、正しいファイルや他のファイルの文字まで置き換えてしまわないか確認するために、最初に一度Findを押して確認しておくと良いかもしれません。 )

$1が取得した文字列になる。括弧( )を増やすと、$2とか$3とか増えていく。

上のものは一例なので、目的に応じて適宜修正、応用してご利用下さい。

 

参考になりそうなリンク:

マッチした複数の文字列を取得($1, $2, ..) - 後方参照 - Ruby正規表現の使い方

その他:

そもそも正規表現を使うまでもないこともあります。

例えば、特定の文字だけ変更したい、特定の文字の前後に何か付け足したいという場合は、変更したい文字列を選択範囲に指定して、Command + D で次々と同じ文字列を選択し、

Shift + Command + L で全ての選択範囲にカーソルを配置して、そして編集できます。

正規表現を書かなくても、ちょっとしたことはこれで済ませられます。

間違いがあれば、ご指摘下さると幸いです。