1

Java ソース ファイル内の引数なしのコンストラクター宣言を認識できるようにする必要があるコードのセグメントに取り組んでいます。これらの宣言は構文的に正しい必要がありますが、次のように複数の行にまたがる場合があります。

public MyCons()

また

public
   MyCons()  

あるいは

public

   MyCons
  (

    )    

私はJavaの正規表現に非常に慣れていないため、これを機能させる方法がわかりません。私がこれまでに試したことは次のとおりです。

public[\\s|\\n]*MyCons[\\s|\\n]*\\(\\S+\\)

ただし、上記の最後の例のように、複数の空白と改行が交互に含まれるケースは検出されないようです。また、MyCons を、単語だけを受け入れる正規表現に置き換えることができれば素晴らしいと思います (ただし、これは厳密には必要ではありません)。

どうすればこれを解決できますか?

4

2 に答える 2

2

クラス名とコンストラクタ名は常に同じなので、後方参照を使用する必要があります..

class\\s*([a-zA-Z\\d$]+).*?(public\\s+\\1\\s*\\(\\s*\\))

Group 2必要なコンストラクターをキャプチャします

DOTALLマッチング中に正規表現オプションを使用する必要があります

于 2013-01-27T12:39:09.423 に答える
0

コードを認識する別の簡単な方法:

s = s.replaceAll("\\s+", "");
s.equals("publicMyCons()");
于 2013-01-27T13:01:26.880 に答える