先日作ったので、メモとして書いておきます。 後方参照で取り出せます。
正確さは保証しません。
あと、コンストラクタは取れません(後ろの方の\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)
static
かsynchronized
かfinal
か空白のあとにpublic
がある行だけ抜き出す(足りていないような気がする……)
(?:(?:public|static|synchronized|final)\s+)+
戻り値型までスキップ
\w+\s+
戻り値型スキップ
(\w+)
メソッド名!
\W.*$
残りをスキップ