コードを書いているときに複数個所を一気に編集したいということが多々あるのですが、検索が面倒だったり、特定のパターンに則って編集したかったりとするのですが、毎回なんかググっている気がするのでメモがてら残しておこうと思います。
正規表現
パターンで検索するときに使うのは正規表現なので、よく使うやつをメモしておきます。
先読み
端的にいうと直後の文字列の有無を基点として検索する、正規表現の機能です。
種類は二つあり、
肯定的先読み(?=pattern)
直後にヒットするパターンがある文字列にヒットする
検索パターン: test(?=aa)
testaa // testにヒット
testbb
testcc
否定的先読み(?!pattern)
直後にヒットするパターンがない文字列にヒットする
検索パターン: test(?!aa)
testaa
testbb // testにヒット
testcc // testにヒット
後読み
こちらは直前の文字列の有無を基点にして検索します。
肯定的後読み(?<=pattern)
直前にヒットするパターンがある文字列にヒットする
検索パターン: (?<=aa)test
aatest // testにヒット
bbtest
cctest
否定的後読み(?<!pattern)
検索パターン: (?<!aa)test
aatest
bbtest // testにヒット
cctest // testにヒット
キャプチャ
パターンでマッチした文字列記憶しておいてあとで使う機能です。
使い方はシンプルで ()
で囲ってあげるだけでキャプチャしてくれます。
後方参照
キャプチャした文字列を検索条件時に再度利用する機能です。キャプチャした文字列は \1
といった形で利用します。
検索パターン:(test)\1
aatesttest // testtest にヒット
複数キャプチャがある場合は
検索パターン:(t)(e)(s)(t)\1\2\3\4
aatesttest // testtest にヒット
置換
キャプチャした文字列を利用して置換する場合はこんな漢字になります。
検索パターン:(test)
置換パターン:$1$1
aatest // aatestestに置換される
VsCodeでのメモ
vscode で使用する場合基本的な以下のコマンドで使えます
ctrl + F
ファイル内検索
ctrl + H
ファイル内置換
ctrl + alt + F
プロジェクト内検索
ctrl + alt + H
プロジェクト内置換
それとは別に便利なのが、 検索状態で alt + enter
を押すことです。
これで、検索でマッチした文字列に対してマルチカーソルになり、一括で編集できます。
最後に
昔のvscodeだと後読みに対応していなかったりとしていましたが、現在の最新版で試してみましたが、問題なく動作しました。
もし、正規表現の後読み、先読みが使えなかったら、バージョンを挙げてみてください。