首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用RegEx从JSON中删除对象

使用RegEx从JSON中删除对象
EN

Stack Overflow用户
提问于 2018-08-26 12:00:35
回答 2查看 1.8K关注 0票数 2

我有以下格式的JSON对象:

代码语言:javascript
复制
 {
     "1f626": {
         "name": "frowning face with open mouth",
         "ascii": [],
         "code_points": {
             "base": "1f626",
             "default_matches": [
                 "1f626"
             ],
             "greedy_matches": [
                 "1f626"
             ],
             "decimal": ""
         }
     }
 }

我必须使用正则表达式删除code_points对象。

我试过使用这个RegEx:

代码语言:javascript
复制
(("code\w+)(.*)(}))

但它只选择了第一行。为了完全摆脱code_points对象,我必须选择直到花括号的末尾。

我该怎么做呢?

注意:我必须使用正则表达式而不是JavaScript来删除它。请不要张贴任何JavaScript答案或将其标记为可能是基于JavaScript的问题的副本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-27 07:12:56

或者,在命令行中,如果可以使用jq

代码语言:javascript
复制
jq "del(.[].code_points)" <monster.json >smaller_monster.json

这将删除每个二级对象中的code_points键。

我的机器在处理一个60MB的文档时花了大约5秒钟。

它不是正则表达式,但也不是JavaScript。因此,它满足了一半的非功能需求。

票数 2
EN

Stack Overflow用户

发布于 2018-08-26 16:38:45

("code_points")([\s\S]*?)(})

您遇到的问题是,.实际上是除\n之外的任何字符,所以在本例中,我通常使用[\s\S],这意味着任何空白和非空白字符(所以它实际上是任何字符)。此外,您还应该通过添加?使*量词变得懒惰。

请记住,如果您有内部对象(** code_points中的其他{}**)对象),则此正则表达式将无法正常工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52023077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档