代码之家  ›  专栏  ›  技术社区  ›  maciejka

使用正则表达式查找包含特定内容的json

  •  0
  • maciejka  · 技术社区  · 6 年前

    [2018-12-10 06:30:38]..再同步健康数据... 
    [2018-12-10 06:30:44]JSON回调处理--->>> 同步运动数据 [2018-12-10 06:30:44]同步运动健康数据json:{  "day" : 10,  "items" : [  {  "activeTime" : 5,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },
    {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },  {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  }  ],  "month" : 12,  "startTime" : 0,
    "timeSpace" : 15,  "totalActiveTime" : 81,  "totalCalory" : 0,  "totalDistance" : 0,  "StepCount" : 0,  "year" : 2018 }  
    [2018-12-10 06:30:44]同步运动健康数据items.sise()=96 
    [2018-12-10 06:30:38]..再同步健康数据... 
    [2018-12-10 06:30:44]JSON回调处理--->>> 同步运动数据 [2018-12-10 06:30:44]同步运动健康数据json:{  "day" : 10,  "items" : [  {  "activeTime" : 5,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },
    {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },  {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  }  ],  "month" : 12,  "startTime" : 0,  "timeSpace" : 15,  "totalActiveTime" : 81,  "totalCalory" : 0,  "totalDistance" : 0,  "totalCount" : 0,  "year" : 2018 }  
    [2018-12-10 06:30:44]同步运动健康数据items.sise()=96
    

    到目前为止,我已经定义了以下用于提取json对象的表达式。

    json:.+?(?=\[2)
    

    我只想提取一个json对象,其中包含名为` totalCount'的元素。我应该在我的实际表达中添加什么?

    已发布的txt文件,替换了json对象的位置

    [2018-12-10 06:30:44]JSON回调处理--->>> 同步运动数据 [2018-12-10 06:30:44]同步运动健康数据json:{  "day" : 10,  "items" : [  {  "activeTime" : 5,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },
    {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },  {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  }  ],  "month" : 12,  "startTime" : 0,  "timeSpace" : 15,  "totalActiveTime" : 81,  "totalCalory" : 0,  "totalDistance" : 0,  "totalCount" : 0,  "year" : 2018 }  
    [2018-12-10 06:30:44]同步运动健康数据items.sise()=96
    [2018-12-10 06:30:38]..再同步健康数据... 
    [2018-12-10 06:30:44]JSON回调处理--->>> 同步运动数据 [2018-12-10 06:30:44]同步运动健康数据json:{  "day" : 10,  "items" : [  {  "activeTime" : 5,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },
    {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  },  {  "activeTime" : 0,  "calory" : 0,  "distance" : 0,  "stepCount" : 0  }  ],  "month" : 12,  "startTime" : 0,
    "timeSpace" : 15,  "totalActiveTime" : 81,  "totalCalory" : 0,  "totalDistance" : 0,  "StepCount" : 0,  "year" : 2018 }  
    [2018-12-10 06:30:44]同步运动健康数据items.sise()=96 
    [2018-12-10 06:30:38]..再同步健康数据... 
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Pushpesh Kumar Rajwanshi    6 年前

    json:.+?(?=\[2)
    

    (?s)json:(?!.*json:.*totalCount.*).*?totalCount.*?(?=\[2)
    

    要实现json,请仅匹配包含 totalCount

    这是消极的前瞻 (?!.*json:) 确保以前的 json: 比赛一看到另一场比赛就被放弃了 在字符串中,由于该字符串,它开始与最近的 json: 而不是第一个。

    Demo