如何使用正则表达式从特定格式字符串中提取键值对?

时间:2014-09-09 11:25:59

标签: javascript regex

我有一个特定格式的字符串

'a:3:{s:8:"postid";s:1:"100";s:6:"commentid";s:1:"200";s:6:"website";s:24:"http://www.example.com";}';

请注意,上面的字符串是不是 JSON,序列化对象或任何其他数据格式。

可能要求是提取双引号中的每个值,并使用双引号中的下一个项进行映射。

我需要的输出是一个数组映射

[postid:100, commentid:200, website:"http://www.example.com"]

这可以用正则表达式来实现吗?提供的密钥postid,commentid和网站将始终存在于输入字符串中。

2 个答案:

答案 0 :(得分:2)

这个简单的应该适合您的需求:

"([^"]+)"[^"]+"([^"]+)"

Regular expression visualization

Debuggex Demo

如您所见,第一组将包含密钥,第二组将包含值。

regex101上的演示

答案 1 :(得分:1)

"(.*?)";[a-zA-Z]*:\d*:\"(\S+?)"

试试这个。这将给所有团体。参见演示。

http://regex101.com/r/cT1rH4/1