Splunk无法识别正则表达式

时间:2020-05-20 14:23:43

标签: json regex parsing splunk

我正努力使splunk可以使用正则表达式。它可以与regex 101一起使用,但是splunk似乎无法识别它!

正则表达式: \"([\w]+)\":([^,}]+)

日志条目:

May 20 12:22:21 127.0.0.1 {"rootId": "AXIxikL8ao-yaSvA", "requestId": "f6a873jkjjkjk:-8000:5738", 
"details": {"flag": false, "title": "task 1", "status": "Waiting", "group": "", "order": 0}, 
"operation": "Creation", "objectId": "AXIyCN5Oao-H5aYyaSvd", "startDate": 1589977341890, 
"objectType": "case_task", "base": true, "object": {"_routing": "AXIxikL8ao-H5aYyaSvA", "flag": 
false, "_type": "case_task", "title": "task 1", "createdAt": 1589977341516, "_parent": "AXIxikL8ao- 
H5aYyaSvA", "createdBy": "user", "_id": "AXIyCN5Oao-H5aYyaSvd", "id": "AXIyCN5Oao-H5aYyaSvd", 
"_version": 1, "order": 0, "status": "Waiting", "group": ""}}

正则表达式101链接: https://regex101.com/r/XBuz9Y/2/

我怀疑splunk可能具有不同的regex语法,但是我真的不知道如何适应它。

有帮助吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用

... | rex max_match=0 "\"(?<key>\w+)\":(?<value>[^,}]+)"

在这里,max_match=0将启用多次匹配(默认情况下,如果您不使用max_match参数,则仅返回第一个匹配项)和{{3} }(请参见(?<key>...)(?<value>...))将确保创建字段。

详细了解named capturing groups

答案 1 :(得分:0)

使用rex获取事件的JSON片段,然后使用spath进行提取。

rex field=_raw "^[^{]+(?<json>.*)" | spath input=json

这应该提取具有适当结构的JSON字段。