【发布时间】:2021-04-13 05:51:27
【问题描述】:
我有一个 JSON 格式的字符串,我正在尝试使用正则表达式对其进行解析。我想解析每个键值对以供以后在 grafana 中使用(正则表达式本身用于 logstash)。
测试字符串如下所示:
{
"version":"1.1",
"nameId":"test",
"productId":"B2",
"total customers":99,
"full_description":"asdf"
}
我正在使用以下正则表达式,但似乎如果该值是一个数字(没有“”),它会将逗号分组在值中。例如,键“total customers”的组值是“99”,而不仅仅是“99”。
(?i)["'](?<key>[^"]*)["'](?:\:)["'\{\[]?([\r\n]?\t+\")?(?<value>\w(?:\s[a-zA-Z0-9_=]\.?)+\w+@(?:(?:\w[a-z\d\-]+\w)\.)+[a-z]{2,10}|true|false|[\w+-.$\s=-]*)(",[\r\n])?(?2)?(?J)(?<value>(?&value))?
为了解析数字的 JSON 值,我必须向正则表达式添加什么?
【问题讨论】:
-
你试过什么?您可以使用
\:"?(\d+)"?,并取决于语言,您可以使用匹配的正则表达式组提取正则表达式 -
@SinhNguyen 我忘了显示我正在使用的正则表达式。为了使正则表达式起作用,我必须将 \:"?(\d+)"? 放在哪里?
标签: regex grafana logstash-grok