torutkのブログ

ソフトウェア・エンジニアのブログ

正規表現でFQCNのクラス名文字列、パッケージ名を抽出する

クラス名を基に処理する際、パッケージ名、クラス名を抽出したい場合があります。Javaでは匿名パッケージが許されるので、FQCNのクラス名を単純にピリオドで区切る方法ではうまくいかず、ちょっと一工夫が必要でした。

いろいろ悩んだ結果、現在の回答は以下の正規表現です。

(?:(.*)\.)?(.*)

  • パッケージ名があれば、グループ1にマッチします。匿名パッケージの場合は空文字列になります。
  • クラス名はグループ2にマッチします。
  • 正規表現では、グループ化するために括弧を使いたいけれど、あとでキャプチャ対象にはしたくない場合に、(?: という記号を使います。