Возможно ли многократно захватывать группу в Regex

Я создаю универсальный парсер, потому способ о котором я буду говорить далее может показаться странным. Так надо. Передо мной стоит задача распарсить строку:


<a attrName1="attrValue1" attrName2="attrValue2">...</a>

Вопрос касается атрибутов. Дело в том что их может быть разное количество (от 0 до бесконечности). Если кратко то я написал примерно это:


<a (\w+="\w*"\s)> ...

Меня интересует группа захвата (\w+="\w*"\s). Как я и сказал выше, таких атрибутов может быть много, но написать (\w+="\w*"\s)* или (\w+="\w*"\s)+ не получится. Дело в том, что я хочу захватить все группы захвата что подразумеваются под * или +, но Regex это трактует как то, что мы хотим захватить одну группу при условии что послу нее могут идти похожие блоки. То есть:


Написав это:
<a (\w+="\w*"\s)+>

я надеюсь что Regex будет трактовать это как
<a (\w+="\w*"\s)(\w+="\w*"\s)(\w+="\w*"\s)(\w+="\w*"\s)(\w+="\w*"\s).....>

то бишь много групп захвата.
Но Regex это трактует как
<a (\w+="\w*"\s)\w+="\w*"\s\w+="\w*"\s\w+="\w*"\s\w+="\w*"\s.....>

всего 1 группа захвата.

Я знаю как можно получить все эти группы захвата инструментами #include <regex>, но вопрос в другом. Можно ли сделать такую штуку средствами самого Regex или он не рассчитан на подобные извращения?


Ответы (0 шт):