regex 如何使用正则表达式提取数组JSON对象中给定属性的值列表?

x3naxklr  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(67)

我在一个ADX集群的列中有以下JSON有效负载,我需要从中提取数据。

[
   {
      "RailType":"HE400",
      "InstallationDate":"2017-07-19T16:00:00.0000000Z",
      "CurvePercentage":99.61377338837824
   },
   {
      "RailType":"ONEHH",
      "InstallationDate":"2017-05-21T16:00:00.0000000Z",
      "CurvePercentage":0.3862266116217716
   }
]

到目前为止,我已经得到了(play with it on RegExr):

"RailType":(".*?")

不幸的是,这匹配:

"RailType":"HE400"
"RailType":"ONEHH"

我真正想要的只是:

HE400
ONEHH

我知道用正则表达式解析JSON并不理想,但我正在constrained by ADX查询使用正则表达式执行此任务的要求。

voase2hg

voase2hg1#

下面是一个匹配并捕获“RailType”字段值的示例模式:

"RailType":"(.*?)"

此模式使用捕获圆括号""中的非贪婪匹配(.*?)来提取双引号之间的值。通过引用捕获的组,您可以获得所需的值,而无需使用引号。
下面是一个示例,说明如何在ADX中应用此正则表达式模式来提取“RailType”值:

CurvesWearRate
| project RailType = extract("\"RailType\":\"(.*?)\"", 1, tostring(RailTypes))
| where isnotempty(RailType)
| distinct RailType

该查询使用修改后的正则表达式模式提取“RailType”值,并将它们分配给名为“RailType”的新列。提取运算符用于从JSON有效负载中捕获所需的值。
执行查询后,应获得以下结果:

| RailType |
|----------|
| HE400    |
| ONEHH    |

相关问题