問題:
Java では、スクリプトを解析し、で始まるファイルからテキストを抽出します。
${GLOBAL_} or ${AUTO_}
最後の中括弧まですべてをピックアップしたいので、たとえば、次の文字列があるとします。
"this is a String ${AUTO_TEST_f} body ${GLOBAL_SYNC} ${AUTO_2} ${OTHER_VAR}"
結果は次のようになります。
${AUTO_TEST_f}
${GLOBAL_SYNC}
${AUTO_2}
私が試みたこと:
私は正規表現パターンを作成しようとしました(うまくいくと思います)。それらを使用してMatcherを作成しました。次に、Matcher を使用してすべての一致をコンソールに出力しようとしましたが、いくつかの問題が発生しています。何らかの理由で、${GLOBAL_VARIABLE_1} をスキップしています。また、これを実装してすべての一致を取得するにはどうすればよいですか? while ループ [while match.group(0) != null]?
これが私のコードです:
String re1="(\\$)"; // Any Single Character 1
String re2="(\\{)"; // Any Single Character 2
String re3="(G)"; // Any Single Character 3
String re4="(L)"; // Any Single Character 4
String re5="(O)"; // Any Single Character 5
String re6="(B)"; // Any Single Character 6
String re7="(A)"; // Any Single Character 7
String re8="(L)"; // Any Single Character 8
String re9="(_)"; // Any Single Character 9
String re10="(.*?)"; // Any Single Character 10
String re11="(\\})"; // Any Single Character 11
String r1="(\\$)"; // Any Single Character 1
String r2="(\\{)"; // Any Single Character 2
String r3="(A)"; // Any Single Character 3
String r4="(U)"; // Any Single Character 4
String r5="(T)"; // Any Single Character 5
String r6="(O)"; // Any Single Character 6
String r7="(_)"; // Any Single Character 7
String r8="(.*?)"; // Any Single Character 8
String r9="(\\})"; // Any Single Character 9
Pattern p = Pattern.compile((re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11));
Pattern p2 = Pattern.compile(r1+r2+r3+r4+r5+r6+r7+r8+r9);
Matcher m = p.matcher(txt);
Matcher m1 = p2.matcher(txt);
m1.find();
System.out.println(m1.group(0));
m.find();
System.out.println(m.group(0));
そして、これはコンソールの結果です:
Actual Results:
${AUTO_1}
${GLOBAL_VARIABLE_2}
これが私の期待される結果です:
Expected Results:
${GLOBAL_VARIABLE_1}
${AUTO_1}
${GLOBAL_VARIABLE_2}
${GLOBAL_VARIABLE_3}
ありがとう!