有効な変数宣言のJava正規表現チェッカーを作成しようとしています。[<-SPACE->]を受け入れ、regex javaの予約語を受け付けない
private static final String STRING_ARRAY_DATA_TYPE = "((String\\s*\\[\\s*\\]\\s*)"+STRING_VARIABLE+"|"+
"(String\\s+"+STRING_VARIABLE+"\\s*\\[\\s*\\]\\s*))";
private static final String STRING_VARIABLE = "[$|_|[a-zA-Z]][$|_|\\w]*";
private static final String STRING_ARRAY_VALUES = "((" + STRING_VALUE + ",\\s*)*" + STRING_VALUE + "\\s*)*";
private static final String ASSIGNMENT = "\\s*=\\s*";
private static final String END_OF_STATEMENT = "\\s*;+\\s*";
そして、私はこの機能を持っている:わかりましたので、私は次のコードの変数を持って
private static boolean checkStringArray(String text) {
return text.matches(STRING_ARRAY_DATA_TYPE + END_OF_STATEMENT) ||
text.matches(STRING_ARRAY_DATA_TYPE + "\\s+" + ASSIGNMENT +
"((new String\\[\\s*-?\\d+\\s*\\])|(new String\\[\\]\\{" + STRING_ARRAY_VALUES + "\\})|(\\{" + STRING_ARRAY_VALUES + "\\}))" + END_OF_STATEMENT);
}
だから私は二つの質問があります。
どのように私は私の正規表現を受け入れない作るのですがJavaの特定の予約語は、例えば
true
とfalse
のように?私はものを検索してきたが、本当にそれは、この入力を受け付けていません理由として答えを見つけることができます:
String [ ] myString;
私たちに入力と期待される出力を与える例を与えてください。 –
@PascalHeraud oh oh私はregexを使ってJavaの識別子の宣言をしようとしています。ご覧のとおり、2つの質問があります。 #1の場合、たとえば「int true」とします。真は予約語なので、受け入れてはならない。 #2では、String [] myStringを見つけました。受け入れられるべきですが、私のコードはそうしていません。 –
与えているコードはコンパイルされません。 STRING_VARIABLEは使用後に定義されます(簡単です)。STRING_VALUEは定義しません。肯定的な例と否定的な例を含むテストシナリオと、あなたが得るものの代わりに期待するものも与えてください。何千という言葉に価値があるコード... –