Regexp захватить неограниченное количество групп

Мне нужна небольшая помощь здесь.

Итак, у меня есть строка:
{block name="something" param1="param" param2="param"}
может быть:
{block name="something"} или же
{block name="something" param1="value" sm="value" ng="value" um="param" .. and so on},

Что мне нужно, это захватить все возможные параметры.

Что я мог понять, так это {(?<type>[\w]+) ((?<param>[\w]+)="(?<value>[\w]+)"), но он фиксирует только первый параметр - "имя":/

Любая помощь будет оценена.

1 ответ

Решение

Здесь вам нужно использовать \G для того, чтобы сделать непрерывное совпадение строк. \h соответствует любому горизонтальному пробелу.

(?:^\{(?<type>\w+)|\G)\h*((?<param>\w+)="(?<value>\w+)")

DEMO

Другие вопросы по тегам