Regex 用于在JSON文件中拆分两个事件的正则表达式

Regex 用于在JSON文件中拆分两个事件的正则表达式,regex,Regex,我有一个JSON日志文件,我正在寻找一个正则表达式来拆分其中的事件。我已经写了一篇文章,但它将所有事件作为一个整体阅读 日志文件: [ { "name" : "CounterpartyNotional", "type" : "RiskBreakdown", "duration" : 20848, "count" : 1, "average" : 20848.0 }, { "name" : "CounterpartyPreSettlement", "ty

我有一个JSON日志文件,我正在寻找一个正则表达式来拆分其中的事件。我已经写了一篇文章,但它将所有事件作为一个整体阅读

日志文件:

[ {
   "name" : "CounterpartyNotional",
   "type" : "RiskBreakdown",
   "duration" : 20848,
   "count" : 1,
   "average" : 20848.0
 }, {
   "name" : "CounterpartyPreSettlement",
   "type" : "RiskBreakdown",
   "duration" : 15370,
   "count" : 1,
   "average" : 15370.0
 } ]
 [ {
   "name" : "TraderCurrency",
   "type" : "Formula",
   "duration" : 344,
   "count" : 1,
   "average" : 344.0
 } ]

PS:我将使用此正则表达式作为Splunk工具。

您的正则表达式不会同时读取所有事件。在正则表达式上方的行中(链接页面上)写有“2个匹配项”,这意味着您的正则表达式已拆分日志,但您必须知道如何使用运行正则表达式匹配的语言迭代匹配项(即事件)

例如,在Python 3中(如果您不介意我简化正则表达式):


是的,这是真的,这不是有效的JSON,但在链接页面上它是可以的,因此可能是输入错误。

两个JSON数组不能构成有效的JSON文档。你给我们看的正则表达式似乎产生了几个匹配项,每组只有一个事件。。。你到底想要什么?你的语言或工具是什么?你有没有考虑过JSON解析器,或者你是使用JSON解析器的。我可以处理两个数组的事情。如果有一个数组包含多个事件,那么它会工作吗?
import re

log = """[ {
   "name" : "CounterpartyNotional",
   "type" : "RiskBreakdown",
   "duration" : 20848,
   "count" : 1,
   "average" : 20848.0
 }, {
   "name" : "CounterpartyPreSettlement",
   "type" : "RiskBreakdown",
   "duration" : 15370,
   "count" : 1,
   "average" : 15370.0
 } ]
 [ {
   "name" : "TraderCurrency",
   "type" : "Formula",
   "duration" : 344,
   "count" : 1,
   "average" : 344.0
 } ]"""

event =  re.compile(r'{[^}]*?"RiskBreakdown"[^}]*}')
matches =  event.findall(log)
print(matches)