json - 使用正则表达式解析 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]+)""")
解决方案
这个示例公式怎么样?
示例公式:
=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”中。 - 该公式的流程如下。
- 用using替换
[\[{}\]]
原始值。""
REGEXREPLACE
- 用using替换
""idcode"":""([\w]+)""(?:.*?title:"")([\w]+)"";IsGroup:true;?
第一个替换值。$1,$2,
REGEXREPLACE
- 将第二个替换值拆分为 2 列。
- 在这种情况下,我使用了这个线程的方法。
- 用using替换
结果:
笔记:
作为其他方法,以下示例公式可以检索到与上述公式相同的结果。在此公式中,
SPLIT
使用@
和使用 2 次,
。=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(REGEXREPLACE(REGEXREPLACE(A1,"[\[{}\]]",""),"""idcode"":""([\w]+)""(?:.*?title:"")([\w]+)"";IsGroup:true;?","$1,$2@"),"@")),","))
如果
,
和@
包含在原始值的值中,请更改上述公式。
参考:
推荐阅读
- javascript - 如何将调整大小手柄的位置更改为 DIV 的中间?
- java - 替换字符串中的换行符,除了 json 中的换行符
- python - 如何检查一个类实例是否大于另一个?
- python - 熊猫相关矩阵迭代
- apache-spark - 如何将行添加到 Spark 中的现有分区?
- javascript - 如何在javascript中多次读取同一个文件
- windows - Azure 批处理 Windows 容器工作负载从提供的命令行中删除引号
- elasticsearch - 基于 3 个不同的弹性搜索查询聚合结果
- java - 无法在 Android 中正确设置改造标头
- python - Pandas json_normalize 和 JSON 扁平化错误