Вопрос
Из вашего зашифрованного описания при условии, что я правильно его расшифровал!
Мне кажется, что ваша страница 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"%>
, как для ex, используя следующий шаблон
Pattern p = Pattern.compile("class=\"(<%=(.(?<!%>\"))*)\"");
// [<%=w_canEdit?"IconSpacing":"IconDisable"%>]
вы все равно никогда не сможете идентифицировать значение времени выполнения class
[как IconSpacing
или IconDisable
] путем анализа файла jsp в любом случае.
Самый простой способ сделать это - сделать это вручную
grep class= *.jsp
- идентифицирует классы css, в которых есть jsp скриптлеты
- извлеките необходимые данные из результата
Если вы можете поднять отдельный Вопрос с точными деталями вашего требования, люди здесь будут рады помочь
Также см. Этот пост RegEx соответствует открытым тегам, за исключением автономных тегов XHTML , чтобы понять, почему использование регулярных выражений для анализа html / jsp-страниц не является отличной идеей!