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+)")