ひびのログ

日々ではないけどログを出力していくブログ

Javaのpublicクラス名・メソッド名をgrepするための正規表現

先日作ったので、メモとして書いておきます。 後方参照で取り出せます。

正確さは保証しません。 あと、コンストラクタは取れません(後ろの方の\w+\s+を抜けば取れると思います)。

^\s*(?=(?:static|synchronized|final|\s)*public\s)(?:(?:public|static|synchronized|final)\s+)+\w+\s+(\w+)\W.*$

よくわかる解説

^\s*

先頭から空白を読み飛ばす

(?=(?:static|synchronized|final|\s)*public\s)

staticsynchronizedfinalか空白のあとにpublicがある行だけ抜き出す(足りていないような気がする……)

(?:(?:public|static|synchronized|final)\s+)+

戻り値型までスキップ

\w+\s+

戻り値型スキップ

(\w+)

メソッド名!

\W.*$

残りをスキップ