我正在编写一个实用程序来从 JSP 中提取头文件的名称。我逐行阅读 JSP 并找到我需要的行没有问题。我在提取使用正则表达式所需的特定文本时遇到问题。在查看了许多类似的问题后,我遇到了障碍。
我将从内部匹配的字符串的一个示例是:
<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());
}}
我需要能够使用 Java RegEx API 和正则表达式来提取这些标头名称。
非常感谢您对此问题的任何帮助。谢谢!
编辑:
解决了这个问题,谢天谢地。棘手的部分是,在获得正确的正则表达式之后,必须考虑到我提供给正则表达式的字符串总是有两个“/”字符( (/"MY_HEADER"/) )需要在模式中被转义。
这是有效的(感谢帮助;-)):
Pattern pattern = Pattern.compile("<%=Pages\\.getString\\(\\\\\"([^\\\\\"]*)");