我正在尝试解析以下类型的字符串:
[key:"val" key2:"val2"]
在这里有任意数量的key:"val"对。我想要获取key名称和对应的value值。
为了好奇,我正在尝试解析Task Warrior数据库格式的字符串。
这里是我的测试字符串:
[description:"aoeu" uuid:"123sth"]
这个代码片段旨在强调键或值中可能包含除空格以外的任何字符,冒号周围不能有空格,值总是用双引号括起来。
在Node环境下,我的输出如下:
[deuteronomy][gatlin][~]$ node
> var re = /^\[(?:(.+?):"(.+?)"\s*)+\]$/g
> re.exec('[description:"aoeu" uuid:"123sth"]');
[ '[description:"aoeu" uuid:"123sth"]',
'uuid',
'123sth',
index: 0,
input: '[description:"aoeu" uuid:"123sth"]' ]
但是description:"aoeu"
也符合这种模式。如何获得所有匹配项?
str.matchAll(regex)
来迭代获取所有匹配项,包括组的元信息。因此,这个应该是被接受的答案,因为它现在得到了很好的支持。 - undefined