首页 > 解决方案 > 使用正则表达式解析 json

问题描述

你能帮我解析谷歌表格单元格中的一些 json 内容吗,我可以将第一个模式与正则表达式捕获组匹配,但不能匹配以下模式。我没有成功放置 /gmi 选项或从其他一些代码示例中调整我的案例,并且自 2 天以来我又在浪费时间。非常感谢

单元格中的 json : [{"idcode":"1AGLG";parent:"1A";level:"Genus";title:"Aglaonema";IsGroup:true};{"idcode":"1ALDG";parent:" 1A";level:"Genus";title:"Alocasia";IsGroup:true};{"idcode":"1BBSG";parent:"1A";level:"Genus";title:"Ambrosina";IsGroup:true };{"idcode":"1AMUG";parent:"1A";level:"Genus";title:"Amorphophallus";IsGroup:true}]

我的公式: REGEXEXTRACT(A1; """idcode"":""([\w]+)""(?:.*?title:"")([\w]+)""")

和工作表文件:https ://docs.google.com/spreadsheets/d/17YSCK2S8IeqFE_Y_kqWQLVwT9VONXkxvCY3Hlr-8Xpc/edit?usp=sharing

标签: jsonregexgoogle-sheets

解决方案


这个示例公式怎么样?

示例公式:

=ARRAYFORMULA(TRIM(SPLIT(TRANSPOSE(SPLIT(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(A1,"[\[{}\]]",""),"""idcode"":""([\w]+)""(?:.*?title:"")([\w]+)"";IsGroup:true;?","$1,$2,"),"(([\w\s\S]+?,){2})","$1@"),"@")),",")))
  • 在此示例公式中, 的值[{"idcode":"1AGLG";parent:"1A";level:"Genus";title:"Aglaonema";IsGroup:true};{"idcode":"1ALDG";parent:"1A";level:"Genus";title:"Alocasia";IsGroup:true};{"idcode":"1BBSG";parent:"1A";level:"Genus";title:"Ambrosina";IsGroup:true};{"idcode":"1AMUG";parent:"1A";level:"Genus";title:"Amorphophallus";IsGroup:true}]放在单元格“A1”中。
  • 该公式的流程如下。
    1. 用using替换[\[{}\]]原始值。""REGEXREPLACE
    2. 用using替换""idcode"":""([\w]+)""(?:.*?title:"")([\w]+)"";IsGroup:true;?第一个替换值。$1,$2,REGEXREPLACE
    3. 将第二个替换值拆分为 2 列。

结果:

在此处输入图像描述

笔记:

  • 作为其他方法,以下示例公式可以检索到与上述公式相同的结果。在此公式中,SPLIT使用@和使用 2 次,

      =ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(REGEXREPLACE(REGEXREPLACE(A1,"[\[{}\]]",""),"""idcode"":""([\w]+)""(?:.*?title:"")([\w]+)"";IsGroup:true;?","$1,$2@"),"@")),","))
    
  • 如果,@包含在原始值的值中,请更改上述公式。

参考:


推荐阅读