我正在跟踪JSON数据:
{
"a": {
"b": "value"
},
"c": {
"a": {
"b": "another value"
}
}
}
字段的顺序不确定(例如,在以上示例中,b
可以高于a
)。现在,我只想匹配根元素a
及其值。
我尝试过的是以下正则表达式:
(?:"c".*?})?.*"a":\s?.*?"b":\s?"?(.*?)"?[,}]
我为字段c
保留了非捕获组。但是问题是,如果整个JSON中没有b
字段,那么对于巨大的有效负载,要采取太多步骤才能发现有效负载中不存在匹配项(由于回溯)。
Here是我的实际有效负载的一个示例,该过程大约花费了9秒的时间和500K步。在regex101上的实际有效负载中,a
= file
,b
= size
和c
= event_actor
。因此,这是匹配JSON数据的非常低效的方法。
那么我在这里想念的是什么?任何想法,将不胜感激。
注意::我要为 Java 使用这种类型的正则表达式,因此标准正则表达式库中不支持递归。