javascript - RegEx 使用 RegExp.exec 从字符串中提取所有匹配项

标签 javascript regex regex-group taskwarrior

我正在尝试解析以下类型的字符串:

[key:"val" key2:"val2"]

其中有任意 key:"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" 也匹配此模式。我怎样才能取回所有匹配项?

最佳答案

继续循环调用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);

用这个 JSFiddle 试试:https://jsfiddle.net/7yS2V/

关于javascript - RegEx 使用 RegExp.exec 从字符串中提取所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58030838/

相关文章:

python - 由于单引号和双引号,正则表达式不工作

javascript - javascript中字符串到数字的转换

javascript - 为什么我总是得到 NaN?

javascript - clientY 返回整个屏幕的像素 Y,而不是 div

.net - 正则表达式的默认初始化选项是什么?

c# - 在 C# 中使用正则表达式在字符串中 append 匹配项

python - 使用 RegEx 在文件中搜索以使用 Python 查找 ID 及其编号

python - 如何使用 python 从包含括号的字符串中提取子字符串?

javascript - 在 jupyter 笔记本中使用匹配替换查找和替换实用程序

javascript - 如何使用闭包概念获得相同的输出