2015-02-06 4 views
1

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

Поэтому у меня есть строка:
{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]+)"), но она захватывает только первый из параметров - «имя»:/

Любая помощь будет оценена.Regexp захват неограниченных групп

+0

, что это язык, который вы используете? –

+0

Я использую PHP. –

+0

попробуйте только '((? [\ w] +) =" (? [\ w] +) ")' –

ответ

1

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

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

DEMO

+0

Это будет трюк. Благодаря! –