JSPからヘッダーファイルの名前を抽出するユーティリティを書いています。JSPを1行ずつ読み、必要な行を見つけるのに問題はありません。正規表現を使用して必要な特定のテキストを抽出する際に問題が発生しました。多くの同様の質問を見た後、私はレンガの壁にぶつかっています。
内部から照合する文字列の例は次のとおりです。
<jsp:include page="<%=Pages.getString(\"MY_HEADER\")%>" flush="true"></jsp:include>
この例では、必要なのはMY_HEADERだけです。私がこのタグを持っているときはいつでも:
<%=Pages.getString
私はこれの間に来るものが必要です:
<%=Pages.getString(\" and this: )%>
これが私が現在持っているものです(これは機能していません、私は追加するかもしれません):
String currentLine;
while ((currentLine = fileReader.readLine()) != null)
{
Pattern pattern = Pattern.compile("<%=Pages\\.getString\\(\\\\\"([^\\\\]*)");
Matcher matcher = pattern.matcher(currentLine);
while(matcher.find()) {
System.out.println(matcher.group(1).toString());
}}
これらのヘッダー名を抽出するには、JavaRegExAPIと正規表現を使用できる必要があります。
この問題に関する助けをいただければ幸いです。ありがとう!
編集:
ありがたいことに、この問題を解決しました。トリッキーな部分は、適切な正規表現が与えられた後、正規表現にフィードする文字列には常に2つの "/"文字((/ "MY_HEADER" /))が必要であることを考慮に入れる必要がありました。パターンでエスケープされます。
これがうまくいったものです(助けに感謝します;-)):
Pattern pattern = Pattern.compile("<%=Pages\\.getString\\(\\\\\"([^\\\\\"]*)");