陷入使用正则表达式仅提取JSON根元素的问题

时间:2018-07-05 06:10:29

标签: java json regex

我正在跟踪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 = fileb = sizec = event_actor。因此,这是匹配JSON数据的非常低效的方法。

那么我在这里想念的是什么?任何想法,将不胜感激。

注意::我要为 Java 使用这种类型的正则表达式,因此标准正则表达式库中不支持递归。

0 个答案:

没有答案