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


Regular expression picking all key-value pairs

我有这样的语法

{{ 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

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

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

Regex Live demo

PHP Live demo

/([^'s]+):([^';]+);/g就行了