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