27
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

正規表現とVSCodeのメモ

Last updated at Posted at 2019-12-31

コードを書いているときに複数個所を一気に編集したいということが多々あるのですが、検索が面倒だったり、特定のパターンに則って編集したかったりとするのですが、毎回なんかググっている気がするのでメモがてら残しておこうと思います。

正規表現

パターンで検索するときに使うのは正規表現なので、よく使うやつをメモしておきます。

先読み

端的にいうと直後の文字列の有無を基点として検索する、正規表現の機能です。
種類は二つあり、

肯定的先読み(?=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だと後読みに対応していなかったりとしていましたが、現在の最新版で試してみましたが、問題なく動作しました。
もし、正規表現の後読み、先読みが使えなかったら、バージョンを挙げてみてください。

27
25
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?