用于双引号或单引号内数据的Java模式,不包括括号内的引号

时间:2018-05-21 10:53:38

标签: java regex pattern-matching

我需要一个Java Pattern来获取HTML元素的所有属性,这些属性将作为String传递。 最初,我曾经使用以下模式分割它们

private static Pattern scriptletvalue1 = Pattern.compile("value=\"([^\"]*)\"");
private static Pattern scriptletvalue2 = Pattern.compile("value='([^']*)'");
private static Pattern scriptletId1 = Pattern.compile("id=\"([^\"]*)\"");
private static Pattern scriptletId2 = Pattern.compile("id='([^\']*)'");
所有属性的

等等,这可以正常工作,直到属性值中没有双引号。 但是考虑到调用函数的属性值中的scriptlet可能有双引号的参数,这就是上述模式失败的地方。

所以对于一个属性

<div value="<%=AnyText%>"></div>

第一种模式会给我<%=AnyText%>

但是当我使用相同的模式

<div value="<%=myFunction.getValue("some Key")%>"></div>

模式将返回<%=myFunction.getValue(而不是&lt;%= myFunction.getValue(&#34;某些键&#34;)%&gt;

如何解决?

0 个答案:

没有答案