Java模式多线

时间:2018-05-08 20:36:49

标签: java regex

您好我想在HTML中找到该代码

{%foreach damagePhotos : photo%}
    <img src="{%=photo}" alt="" width="320" height="200"/>
{%endforeach%}

我的正则表达式是:

Matcher matcher = Pattern.compile("\\{\\%foreach\\s(.*)\\s:\\s(.*)\\%\\}\\s(.*)\\s\\{\\%endforeach\\%\\}",Pattern.MULTILINE).matcher(parsedHtml);

一切都工作得很好,我有很多这样的模式我是:(

例如:

<p>
    {%foreach carPhotos : photo%}
    <img src="{%=photo}" alt="" width="320" height="200"/>
    {%endforeach%}
</p>
<p>
    {%foreach damagePhotos : photo%}
    <img src="{%=photo}" alt="" width="320" height="200"/>
    {%endforeach%}
</p>

然后马瑟找到一场比赛,组(1)是:

carPhotos : photo%}    <img src="{%=photo}" alt="" width="320" height="200"/>    {%endforeach%}</p><p>    {%foreach damagePhotos

我的正则表达式出了什么问题?

1 个答案:

答案 0 :(得分:3)

.*是贪婪的,这意味着它将跨越多个foreach组。

尝试添加一个不情愿的限定符,即.*?

另外,请注意limitations of using regex to parse HTML