我有以下格式的JSON对象:
{
"1f626": {
"name": "frowning face with open mouth",
"ascii": [],
"code_points": {
"base": "1f626",
"default_matches": [
"1f626"
],
"greedy_matches": [
"1f626"
],
"decimal": ""
}
}
}
我必须使用正则表达式删除code_points
对象。
我试过使用这个RegEx:
(("code\w+)(.*)(}))
但它只选择了第一行。为了完全摆脱code_points
对象,我必须选择直到花括号的末尾。
我该怎么做呢?
注意:我必须使用正则表达式而不是JavaScript来删除它。请不要张贴任何JavaScript答案或将其标记为可能是基于JavaScript的问题的副本。
发布于 2018-08-27 07:12:56
或者,在命令行中,如果可以使用jq
jq "del(.[].code_points)" <monster.json >smaller_monster.json
这将删除每个二级对象中的code_points
键。
我的机器在处理一个60MB的文档时花了大约5秒钟。
它不是正则表达式,但也不是JavaScript。因此,它满足了一半的非功能需求。
发布于 2018-08-26 16:38:45
("code_points")([\s\S]*?)(})
您遇到的问题是,.
实际上是除\n
之外的任何字符,所以在本例中,我通常使用[\s\S]
,这意味着任何空白和非空白字符(所以它实际上是任何字符)。此外,您还应该通过添加?
使*
量词变得懒惰。
请记住,如果您有内部对象(** code_points
中的其他{}
**)对象),则此正则表达式将无法正常工作
https://stackoverflow.com/questions/52023077
复制相似问题