регулярное выражение не совпадает, если в одной строке - PullRequest
0 голосов
/ 23 марта 2020

Я создал регулярное выражение, соответствующее моему пользовательскому тегу html. Например:

<var-input id="" kind="{&quot;id&quot;:2,&quot;art&quot;:&quot;TEXT&quot;,&quot;name&quot;:&quot;Textfeld&quot;,&quot;default&quot;:null}" choices="1,2,3,four" value="radio not text"></var-input>

Метка html всегда имеет форму <var-input id="" kind="" choices="" value=""></var-input>

И вот ограничения:

  • id строка uuid4 или пустая
  • kind является JSON строковым объектом
  • choices является массивом (через запятую) или пустым
  • value является строка или пусто

Теперь это мое регулярное выражение:

<var-input id=\"([0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12})?\" kind=\"({.*})\" choices=\"([a-zA-Z0-9_,\s]*)\" value=\"([a-zA-Z0-9_,\s]*)\"></var-input>

Хорошо работает для одного совпадения, как в примере выше. Но если в одной строке более одного <var-input ...></var-input>, регулярное выражение работает некорректно. Почему? Вот пример

Спасибо!

1 Ответ

1 голос
/ 23 марта 2020

Просто сделайте {.*} не жадным: {.*?}.

Обновленная демоверсия

...