在java文件中,我读了jsp文件并尝试使用下面的正则表达式查找使用的css clasess的数量,“class =”及其值。
Pattern p = Pattern.compile("class=\"([^\"]*)\"");
Set set = new HashSet();
Iterator iterator;
while ((strLine = br.readLine()) != null)
{
Matcher m = p.matcher(strLine);
}
while (m.find())
{
String classValue = m.group(1);
set.add(classValue);
}
它给了我类名,意思是jsp contents class =“List”或class =“listItem”。
输出为{ List listItem }
。如果我的JSP内容
output = "<%=w_canEdit?"
,但我只想要一个类IconSpacing或IconDisable如何做到这一点答案 0 :(得分:0)
假设我已正确解密它,从您的加密说明开始!
在我看来你的jsp页面包含以下行
<img src="a.jpeg" class="<%=w_canEdit?"IconSpacing":"IconDisable"%>"/>
您的正则表达式与<%=w_canEdit?\
@Test
public void testRegex() {
Pattern p = Pattern.compile("class=\"([^\"]*)\"");
Set set = new HashSet();
//<img class="<%=w_canEdit?"IconSpacing":"IconDisable"%>" src="a.jpeg"/>
String str="<img src=\"a.jpeg\" class=\"<%=w_canEdit?\"IconSpacing\":\"IconDisable\"%>\"/>";
System.out.println(str);
Matcher m = p.matcher(str);
while (m.find())
{
String classValue = m.group(1);
set.add(classValue);
}
System.out.println("Result:");
System.out.println(set);
}
<强>输出强>
Input:
<img src="a.jpeg" class="<%=w_canEdit?"IconSpacing":"IconDisable"%>"/>
Result:
[<%=w_canEdit?]
您对结果的期望
[IconSpacing,IconDisable]
简答:
你不能用正则表达式
答案很长:
您无法使用正则表达式执行此操作,即使使用lookahead hacks您可以将其解析为<%=w_canEdit?"IconSpacing":"IconDisable"%>
,例如使用以下模式
Pattern p = Pattern.compile("class=\"(<%=(.(?<!%>\"))*)\"");
// [<%=w_canEdit?"IconSpacing":"IconDisable"%>]
通过解析jsp文件,您仍然无法识别class
[作为IconSpacing
或IconDisable
]的运行时值。
最简单的方法是手动执行
grep class= *.jsp
如果您可以针对您的要求的具体细节提出单独的问题,那么人们将非常乐意为您提供帮助
另请参阅此帖子RegEx match open tags except XHTML self-contained tags以了解为什么使用正则表达式解析html / jsp页面并不是一个好主意!