我正在尝试解析以下类型的字符串:
[key:"val" key2:"val2"]
里面有任意键:“ val”对。我想获取键名和值。对于那些好奇的人,我试图解析任务战士的数据库格式。
这是我的测试字符串:
[description:"aoeu" uuid:"123sth"]
这是要强调的是,除了空格,冒号周围没有空格而且值始终用双引号引起来,键或值中的任何内容都可以位于键或值中。
在节点中,这是我的输出:
[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"也符合这种模式。如何找回所有比赛?
description:"aoeu"
继续re.exec(s)循环调用以获取所有匹配项:
re.exec(s)
var re = /\s*([^[:]+):\"([^"]+)"/g; var s = '[description:"aoeu" uuid:"123sth"]'; var m; do { m = re.exec(s); if (m) { console.log(m[1], m[2]); } } while (m);