2015-02-06 118 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]+)"),但它僅捕獲第一個參數 - 「名」:/

任何幫助將不勝感激。正則表達式捕獲無限組

+0

什麼是您所使用的語言? – 2015-02-06 08:32:12

+0

我正在使用PHP。 – 2015-02-06 08:40:11

+0

只試試'((? [\ w] +)=「(? [\ w] +)」)' – 2015-02-06 08:44:21

回答

1

在這裏你需要使用\G來做連續的字符串匹配。 \h匹配任何水平空白字符。

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

DEMO

+0

這樣做就可以了。謝謝! – 2015-02-06 08:51:19