メインコンテンツへスキップ

Pythonコード検索に役立つ正規表現パターン集

🌱 はじめに

大規模なコードベースを扱うとき、「この変数どこで定義している?」「関数の呼び出しだけ抽出したい」など、検索ニーズは必ず出てきます。
ここでは Pythonコード特有の典型的な正規表現パターンgrep で活用できる形でまとめます。


🔤 変数関連

変数代入

grep -E "^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*[[:space:]]*="

→ 変数に代入している行を抽出

= が比較演算子 == と紛れないように注意。[^=]=[^=] のように工夫するとより正確。


定数(慣習的に大文字)

grep -E "^[[:space:]]*[A-Z_][A-Z0-9_]*[[:space:]]*="

→ モジュールレベルの定数定義


🛠️ 関数・クラス

関数定義

grep -E "^[[:space:]]*def[[:space:]]+[a-zA-Z_][a-zA-Z0-9_]*"

→ 関数定義行

クラス定義

grep -E "^[[:space:]]*class[[:space:]]+[A-Z][a-zA-Z0-9_]*"

→ クラス定義(慣習的にクラス名はCamelCase)

関数呼び出し

grep -E "[a-zA-Z_][a-zA-Z0-9_]*\("

→ 関数呼び出しっぽい記述

if (for ( など制御構文も拾ってしまうので、用途に応じて除外パターンを追加すると良い。


📜 コメント・文字列

コメント行

grep -E "^[[:space:]]*#"

→ コメント行

Docstring

grep -E "\"\"\"|'''"

→ 複数行文字列(docstring含む)


📦 インポート関連

import文

grep -E "^[[:space:]]*import[[:space:]]+[a-zA-Z0-9_.]+"

from import文

grep -E "^[[:space:]]*from[[:space:]]+[a-zA-Z0-9_.]+[[:space:]]+import"

インポートパターンを探すと依存関係を把握しやすい。


🧪 実行判定ブロック

__main__ 判定

grep -E "if[[:space:]]+__name__[[:space:]]*==[[:space:]]*['\"]__main__['\"]"

→ スクリプトのエントリーポイントを特定


⚡ TIPS

  • Pythonの命名規則を反映したパターンにすると誤検出が減る

    • 変数・関数 → snake_case

    • クラス → CamelCase

    • 定数 → UPPER_CASE

  • grep -r と組み合わせればプロジェクト全体を一気に解析可能


🎯 まとめ

  • 変数/関数/クラス を抽出するパターンを覚えるとリファクタリングが楽

  • コメントやdocstring を検索すれば設計意図を素早く探せる

  • import文__main__ 判定は依存関係やエントリーポイント把握に便利