Remove an object from JSON using RegEx
我有这种格式的JSON对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| {
"1f626": {
"name":"frowning face with open mouth",
"ascii": [],
"code_points": {
"base":"1f626",
"default_matches": [
"1f626"
],
"greedy_matches": [
"1f626"
],
"decimal":""
}
}
} |
我必须使用正则表达式删除code_points对象。
我尝试过使用这个regex:
但它只是选择了第一行。为了完全摆脱code_points对象,我必须选择直到花括号结束。
我该怎么做?
注意:我必须使用正则表达式而不是JavaScript删除它。请不要发布任何javascript答案或将其标记为基于javascript的问题的可能副本。
- 只不过是delete obj["1f626"]["code_points"]。
- @使用javascript的Kaiserkatze?
- 对。只需尝试delete obj["1f626"]["code_points"],其中obj是代码中的对象。
- 参考文献:1;2;3。
- 我必须删除使用Regular Expression而不是javascript
- 如果是这样的话,您需要词汇分析功能。
- JSON不是常规语言;在JSON上使用regex实际上很糟糕,这就是为什么我们有JSON解析器。我不敢想是谁强迫你使用regex:。-(
- 如何在javascript中实现词汇分析的可能副本。
- 如果必须在没有javascript的情况下进行,那么问题上的javascript标记可能不合适?
- 希望您理解JSON编码器/解码器不是用正则表达式编写的。
- @ Mina可以选择使用C/C++编写的JSON编码器/解码器。
- 这是一个大的JSON文件:raw.githubusercontent.com/delowar64/emoji finder/master/src/‌&误8203;…我必须减小文件大小,这就是我要使用正则表达式的原因。@ KaiserKatze
- @Mina我不明白为什么你选择不使用javascript。效率?
- @kaiserkatze如果我使用javascript方法,那么如何获得输出值作为新的文件内容?
- @mina如果使用javascript来处理JSON,那么应该学习使用node.js,这是一个独立的javascript引擎。
- @mina您也可以尝试使用python来处理json。
或者,在命令行,如果可以使用jq
1
| jq"del(.[].code_points)" <monster.json >smaller_monster.json |
这将删除每个二级对象中的code_points键。
我的机器花了大约5秒钟在一份60兆字节的文件上。
它不是正则表达式,但也不是javascript。因此,它满足了一半的非功能性需求。
- 感谢您的回答,此代码还删除了对象键和逗号:prntscr.com/knh22y这里是代码段:jqplay.org/s/ohqex8ong_
- 你能帮我一下吗?
- @ Mina。奇怪的。我修正了这个问题。
- 非常感谢
("code_points")([\s\S]*?)(})
你遇到的问题是,.实际上是除
以外的任何字符,所以在这种情况下,我通常使用[\s\S]这意味着任何空格和非空格字符(所以它实际上是任何字符)。另外,你还应该通过添加?使*量词变懒。
记住,如果在code_points中有内部对象(其他{}时),此正则表达式将无法正常工作。