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__
判定は依存関係やエントリーポイント把握に便利