VS Codeでワイルドカード検索をするには?|正規表現を使った柔軟な検索方法

プログラミング・IT

Visual Studio Code(VS Code)で大量のソースコードや設定ファイルを管理していると、「特定のパターンだけまとめて探したい」「一部が異なる複数の文字列を一括で検索したい」と思うことがあります。

VS Codeの検索ボックスはシンプルに見えますが、実は 正規表現(Regex) をサポートしており、これを使えばワイルドカードのように柔軟な検索ができます。

この記事では、VS Codeでのワイルドカード的な検索のやり方から、よく使う正規表現パターン、検索と置換を合わせた活用法まで、わかりやすく解説します。

スポンサーリンク

ワイルドカード検索とは?なぜ必要なの?

ワイルドカードの基本概念

ワイルドカードとは

ワイルドカード(Wildcard) 「何でも代用できるカード」という意味で、コンピューターでは「任意の文字や文字列を表す特殊文字」のことです。

身近な例

ファイル検索での例

  • *.txt → すべてのテキストファイル
  • photo*.jpg → photoで始まるすべてのJPEGファイル
  • report_???.docx → report_の後に3文字が続くWordファイル

なぜワイルドカード検索が必要なの?

プログラム開発での活用場面

変数名の検索

  • user_iduser_nameuser_email など関連する変数をまとめて検索
  • getDatasetDataupdateData など似た名前の関数を一括確認

設定ファイルの管理

  • 環境別の設定ファイル(config.dev.jsonconfig.prod.json
  • バージョン番号付きファイル(app_v1.2.3.js

デバッグとリファクタリング

  • 特定のパターンのコメント除去
  • 古い書き方のコードを新しい書き方に一括変更

VS Codeの検索機能の種類

3つの主要な検索方法

ファイル内検索(Ctrl + F)

  • 現在開いているファイル内のみ検索
  • 簡単な文字列検索から正規表現まで対応

ワークスペース全体検索(Ctrl + Shift + F)

  • プロジェクト全体のファイルを横断検索
  • ファイル種類の絞り込みも可能

ファイル名検索(Ctrl + P)

  • ファイル名で絞り込み検索
  • ファジー検索(部分一致)に対応

VS Codeでワイルドカード検索を有効にする方法

正規表現モードの有効化

ファイル内検索での設定

手順1:検索バーを開く

  1. Ctrl + F(Windows/Linux)または Cmd + F(macOS)
  2. 画面上部に検索バーが表示される

手順2:正規表現モードを有効化

  1. 検索バー右端の .* ボタンをクリック
  2. ボタンが青くハイライトされれば有効
  3. これで正規表現パターンが使用可能

ワークスペース検索での設定

手順1:サイドバーの検索を開く

  1. サイドバーの虫眼鏡アイコンをクリック
  2. または Ctrl + Shift + F のショートカット

手順2:正規表現を有効化

  1. 検索ボックス右側の .* ボタンをクリック
  2. 検索ボックス下部に「Use Regular Expression」と表示される

正規表現が有効になっているかの確認

視覚的な確認方法

  • .* ボタンが青色になっている
  • 検索ボックスの枠線が少し太くなる
  • ツールチップに「Use Regular Expression」と表示

その他の検索オプション

大文字小文字の区別

Aa ボタン

  • 有効:Hellohello を区別する
  • 無効:Hellohello を同じとして扱う

単語全体の一致

Ab ボタン

  • 有効:cat を検索しても category にはマッチしない
  • 無効:catcategory の一部としてもマッチする

よく使うワイルドカード的な正規表現パターン

基本的なメタ文字

ドット(.)- 任意の1文字

使用例

検索パターン: f.o
マッチする文字列: foo, fao, f9o, f@o
マッチしない文字列: fo, fooo

実際の活用場面

// 変数名のパターン検索
let id = 123;    // i.
let ip = "192";  // i.
let if = true;   // i.

アスタリスク(.*)- 任意の文字列

使用例

検索パターン: foo.*bar
マッチする文字列: foobar, foo123bar, foo_test_bar
マッチしない文字列: barfoo, foo

実際の活用場面

// 関数名のパターン検索
function getUserData() {}     // getUser.*
function getUserProfile() {}  // getUser.*
function getUserSettings() {} // getUser.*

プラス(.+)- 1文字以上の任意の文字列

使用例

検索パターン: foo.+bar
マッチする文字列: foo123bar, foo_test_bar
マッチしない文字列: foobar(間に文字がない)

文字クラスとグループ

角括弧([])- 文字クラス

基本的な使い方

検索パターン: f[ao]o
マッチする文字列: foo, fao
マッチしない文字列: feo, fio

範囲指定

検索パターン: [a-z]+ 
説明: 小文字のアルファベット1文字以上

検索パターン: [0-9]+
説明: 数字1文字以上

検索パターン: [A-Za-z0-9]+
説明: 英数字1文字以上

否定文字クラス([^])

使用例

検索パターン: [^0-9]+
説明: 数字以外の文字が1文字以上続く
マッチする文字列: abc, hello_world
マッチしない文字列: 123, a1b

特殊な文字クラス

数字関連

\d – 数字

検索パターン: ID\\d+
マッチする文字列: ID123, ID4567
マッチしない文字列: IDabc, ID

\D – 数字以外

検索パターン: \\D+
マッチする文字列: abc, hello_world
マッチしない文字列: 123, a1b

空白関連

\s – 空白文字

検索パターン: hello\\sworld
マッチする文字列: hello world, hello	world(タブ)

\S – 空白以外

検索パターン: \\S+
説明: 空白以外の文字が続く単語を検索

単語境界

\b – 単語境界

検索パターン: \\bcat\\b
マッチする文字列: "cat"(単独の単語)
マッチしない文字列: "category"(単語の一部)

量詞(Quantifiers)

アスタリスク(*)- 0回以上の繰り返し

使用例

検索パターン: fo*
マッチする文字列: f, fo, foo, fooo

プラス(+)- 1回以上の繰り返し

使用例

検索パターン: fo+
マッチする文字列: fo, foo, fooo
マッチしない文字列: f

クエスチョン(?)- 0回または1回

使用例

検索パターン: colou?r
マッチする文字列: color, colour

波括弧({})- 具体的な回数指定

使用例

検索パターン: \\d{3}
説明: 数字ちょうど3文字

検索パターン: \\d{2,4}
説明: 数字2文字から4文字

検索パターン: \\d{3,}
説明: 数字3文字以上

実践的な検索・置換の活用例

コードのリファクタリング

関数名の一括変更

例:getUserXXXをfetchUserXXXに変更

検索パターン: getUser(\\w+)
置換パターン: fetchUser$1

変更例:
getUserData() → fetchUserData()
getUserProfile() → fetchUserProfile()

変数名の命名規則変更

例:スネークケースからキャメルケースに変更

検索パターン: user_([a-z]+)
置換パターン: user${1^}

変更例:
user_name → userName
user_email → userEmail

HTML/CSS での活用

クラス名の一括変更

HTMLでのクラス名変更

検索パターン: class="btn-(.+?)"
置換パターン: class="button-$1"

変更例:
class="btn-primary" → class="button-primary"
class="btn-secondary" → class="button-secondary"

CSSプロパティの一括更新

古いプレフィックスの削除

検索パターン: -webkit-(.+)
置換パターン: $1

変更例:
-webkit-border-radius → border-radius
-webkit-transform → transform

ログファイルの解析

特定の日時のログ抽出

日付パターンの検索

検索パターン: 2024-01-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}
説明: 2024年1月の任意の日のログ

検索パターン: ERROR.*user_id:\\s*(\\d+)
説明: エラーログからuser_idを抽出

IPアドレスの検索

IPv4アドレスパターン

検索パターン: \\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b
マッチ例: 192.168.1.1, 10.0.0.1

設定ファイルの管理

JSON設定の一括更新

環境変数の置換

検索パターン: "apiUrl":\\s*"http://localhost:(\\d+)"
置換パターン: "apiUrl": "https://api.example.com"

変更例:
"apiUrl": "http://localhost:3000" → "apiUrl": "https://api.example.com"

コメントの一括削除

JavaScriptの単行コメント削除

検索パターン: \\s*//.*$
置換パターン: (空文字)

変更例:
let x = 5; // この変数は重要 → let x = 5;

ファイル名・フォルダでのワイルドカード

Globパターンの基本

files to includeでの絞り込み

基本的なGlobパターン

*.js          # すべてのJavaScriptファイル
*.{js,ts}     # JavaScriptとTypeScriptファイル
src/**/*.py   # srcフォルダ以下のすべてのPythonファイル
test/*.spec.* # testフォルダ内のspecファイル

files to excludeでの除外

除外パターンの例

node_modules/**  # node_modulesフォルダを除外
*.min.js         # 圧縮されたJSファイルを除外
dist/**          # distフォルダを除外
**/*.log         # すべてのログファイルを除外

高度なGlobパターン

ディレクトリ階層の指定

ワイルドカードの種類

*     # 任意のファイル名(ただし/は含まない)
**    # 任意の階層のディレクトリ
?     # 任意の1文字
[abc] # a, b, cのいずれか
{a,b} # aまたはb

実用例

src/**/components/*.vue        # srcフォルダ内のcomponentsフォルダのVueファイル
**/*.{test,spec}.{js,ts}      # テストファイルのみ
pages/[0-9]*.html             # pages内の数字で始まるHTMLファイル
assets/{images,icons}/*.{png,jpg,svg} # 画像ファイルのみ

検索性能の最適化

効率的な検索のコツ

検索範囲の限定

必要な場所だけ検索

  • プロジェクト全体ではなく特定のフォルダに限定
  • ファイル種類を絞り込む
  • 不要なフォルダ(node_modules、.git等)を除外

正規表現の最適化

効率的なパターンの書き方

// 非効率:.*test.*
// 効率的:test

// 非効率:.*\\.js$
// 効率的:\\.js$

大きなプロジェクトでの注意点

メモリ使用量の管理

対策方法

  • 一度に検索するファイル数を制限
  • 正規表現を簡潔に保つ
  • 不要な検索履歴をクリア

検索結果の管理

結果の整理

  • 関連する検索結果をグループ化
  • 不要な結果をフィルタリング
  • 検索結果をファイルに保存

トラブルシューティング

よくある問題と解決法

正規表現が動作しない

原因と対策

  1. 正規表現モードが無効
    • .* ボタンが青くなっているか確認
  2. エスケープが必要な文字
    • .\\.
    • *\\*
    • +\\+
  3. 文字エンコーディングの問題
    • ファイルのエンコーディングを確認
    • UTF-8で保存し直す

検索結果が多すぎる

絞り込み方法

// より具体的なパターンを使用
悪い例: .*test.*
良い例: function\\s+test\\w*

// 単語境界を活用
悪い例: test
良い例: \\btest\\b

特殊文字が検索できない

エスケープが必要な文字一覧

. ^ $ * + ? { } [ ] \ | ( )

正しいエスケープ例

検索したい文字: file.txt
正規表現: file\\.txt

検索したい文字: $variable
正規表現: \\$variable

便利なショートカットとコツ

キーボードショートカット

基本的なショートカット

Windows/Linux

  • Ctrl + F: ファイル内検索
  • Ctrl + H: ファイル内検索・置換
  • Ctrl + Shift + F: ワークスペース検索
  • Ctrl + Shift + H: ワークスペース検索・置換

macOS

  • Cmd + F: ファイル内検索
  • Cmd + Option + F: ファイル内検索・置換
  • Cmd + Shift + F: ワークスペース検索
  • Cmd + Shift + H: ワークスペース検索・置換

検索結果のナビゲーション

結果間の移動

  • F3 または Enter: 次の結果
  • Shift + F3: 前の結果
  • Escape: 検索を終了

検索履歴の活用

検索履歴へのアクセス

履歴の利用方法

  1. 検索ボックスをクリック
  2. 上下矢印キーで過去の検索履歴を選択
  3. よく使うパターンを素早く再利用

検索パターンの保存

スニペット的な活用

  • よく使う正規表現をメモ帳に保存
  • プロジェクト固有のパターンをREADMEに記載
  • チーム内で検索パターンを共有

まとめ

VS Codeでワイルドカード的な検索を行うには、正規表現機能を活用するのが最も効果的です。

基本的な使い方

  • 正規表現モードを有効にする(.* ボタンをクリック)
  • 基本パターン.(任意の1文字)、.*(任意の文字列)
  • 文字クラス[abc][0-9]\\d\\s などを活用

実践的な活用

  • コードのリファクタリングで関数名や変数名を一括変更
  • ログファイルから特定パターンの情報を抽出
  • 設定ファイルの環境間での差分確認

ファイル検索での絞り込み

  • Globパターンで対象ファイルを限定(*.jssrc/**/*.py
  • 除外パターンで不要なファイルをスキップ

効率化のポイント

  • 適切な検索範囲の設定
  • シンプルで効率的な正規表現の使用
  • キーボードショートカットの活用

コメント

タイトルとURLをコピーしました