regex 用奇怪的格式匹配正则表达式字符串中的多个值

uurity8g  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(92)

我试图用正则表达式提取多个值,但我有点迷路了。
我应该在一个名为“value”(用于Grafana)的命名捕获组上获得结果我试图捕获字符串中的一个或多个变量,而不仅仅是找到的第一个值。
得到了这个,但不像预期的那样工作:

(?:\G(?!\A)|.*?\b{?\b)[^}]+?\b(?<value>(\d*?\S))\b

范例:

{"146":146,"547":547,"179":179,"79":79}

我的目标是得到这样的结果:

146, 547, 179, 79

任何Regex天才来帮助?Thanx

6rvt4ljy

6rvt4ljy1#

Grafana使用JavaScript正则表达式引擎作为变量。在代码内部如何处理它可以在这里看到。
为了在一个输入项上提供多个匹配,regex应该 Package 在/ .. /g中。更多关于正则表达式中的标志的信息,请点击这里。
对于您的示例,表达式/(?<="\d+":)(\d+)(?=[,}])/g应该提供预期的结果。这里:

  • (?<="\d+":)检查匹配是否在匹配regex "\d+":之前。如果数据中的实际键与问题示例中提供的键不同,请相应地更正此表达式。
  • (\d+)与实际数字匹配。由于这是唯一的捕获组,因此无需命名。
  • (?=[,}])检查match是否后跟,}

演示here
您自己的尝试失败,因为使用了JS引擎不支持的PCRE语法。

相关问题