正则表达式选择所有键值对

时间:2014-08-21 10:49:16

标签: php regex

我有这个语法

{{ id, key1:value1; key2:value2; keyn:valuen; }}

我需要拿起它以便我有匹配

Array (
    [0] => id
    [1] => key1,
    [2] => value1
    ...
)

我目前拥有的是

\{\{\s*(\d+)(?:,\s*(?:(\$\w+)\:(.*?);)+)?\s*\}\}

输入

{{ 1, $user:John Doe; $dgd:brat; }}

返回

matches:
0: (1)
1: ($user)
2: (John Doe; $dgd:brat)

我希望

matches:
0: (1)
1: ($user)
2: (John Doe)
3: ($dgd)
4: (brat)

谢谢。

2 个答案:

答案 0 :(得分:3)

更新#2

你可以使用这个正则表达式:

(?=[^}]*}})(?(?!\w)\s+)\K([$]?[^[:punct:]]+)

<强> Regex Live demo

PHP Live demo

答案 1 :(得分:0)

/([^\s]+):([^\;]+);/g会这样做。