2012-03-10 12 views
1

.javaファイルで宣言されているクラスの数を調べ、そのファイルタイプのみを使用しています(コンパイルできず、.classファイルを数えています)。Javaのクラス宣言を決定するための堅牢な正規表現

私はこれを行うにはいくつかの受け入れやすい方法を見つけましたが、私は自分が何かをするのは嫌です。私は、より堅牢にそれを行う方法を学習したいと思いますつまり、このようなアカウント縞の可能性を考慮する:

this is actually a block comment with class in it*/ 
//in line comment that contains class keyword 
"string with class in it" 

正規表現は私にとって非常に新しいものですが、私はいくつかのチュートリアルを行ってきましたが、見つけることができないようこのようなケースにマッチする表現を適切に表現することができます。

どのような洞察と助けにも大変感謝します。
ありがとうございます!

+4

残念ながら、あなたは正規表現がこの目的に欠けていると思うでしょう。これを行う正しい方法は、独自のJavaコードパーサーを作成するか、既存のJavaコードパーサーを書き戻すことです。 –

+1

匿名クラスを見つけることはややこしいことだと思います –

+0

正規表現はネストされた括弧で処理できません。私は彼らがこのような洗練されたことを処理できるとは信じられません。 –

答えて

2

言語を記述する正式な文法は、これを行うための非常に正確な方法です。もっと良いことには、すでに使用しているJava言語用の文法がすでに用意されていることがあります。

http://www.antlr.org/grammar/1152141644268/Java.g

0

私はそれは非常に時間がかかるかもしれませんが、あなたが、これを行うには正規表現を書くことができると思います。正規表現をすばやく学びたい場合は、RegexBuddyツールをお勧めします。コードをツールのエディタにコピーし、正規表現を試して、ほぼ同時に結果を見てください。このツールのWebサイトには、数多くの役立つリソースと正規表現言語のスニペットコードも用意されています。