Java Pattern Multiline - PullRequest
       1

Java Pattern Multiline

0 голосов
/ 08 мая 2018

Привет, я хотел бы найти этот код в 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);

И все работает нормально, пока у меня есть много таких шаблонов в HTML: (

например:

<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 голосов
/ 08 мая 2018

.* является жадным, что означает, что он будет охватывать несколько групп foreach.

попробуйте добавить классификатор с неохотой, т.е. .*?

Кроме того, помните об ограничениях использования регулярных выражений для разбора HTML .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...