删除选择性字符串的正则表达式
Regular Expression to remove selective string
希望删除介于 json 之间的特定字符串:
例如我的 Json 字符串是:
{"tableName":"avzConf","rows":[{"Comp":"mster","Conf": "[{\"name\": \"state\", \"dispN\": \"c_d_test\", \"\": {\"updated_at\": \"2020-09-16T06:33:07.684504Z\", \"updated_by\": \"Abc_xyz<abc_xyz@uuvvww.com>\"}}, {\"name\": \"stClu\", \"dNme\": \"tab(s) Updatedd\", \"\": {\"updated_at\": \"2020-09-21T10:17:48.307874Z\", \"updated_by\": \"Def Ghi<def_ghi@uuvvww.com>\"}}
}]
}
要删除: \"\": {\"updated_at\": \"2020-09-16T06:33:07.684504Z\", \"updated_by\": \"Abc_xyz<abc_xyz@uuvvww.com>\"}
预期输出:
{"tableName":"avzConf","rows":[{"Comp":"mster","Conf": "[{\"name\": \"state\", \"dispN\": \"c_d_test\"}, {\"name\": \"stClu\", \"dNme\": \"tab(s) Updatedd\"}
}]
}
我试过 ( \"\": {\"updated_\w+)(.*)(>\")
在我的代码中使用:
import re
line = re.sub(r"updated_\w+(.*)(.com>)", '', json_str)
但它也会选择行之间,因为有 2 次出现“”:{"updated_at\ 和 "updated_by"
并留下特殊字符 "": {""}
如何彻底删除 \"\": {\"updated_at\": \"2020-09-16T06:33:07.684504Z\", \"updated_by\": \"Abc_xyz<abc_xyz@uuvvww.com>\"}
?
试试这个:
\{\"updated_at[^{]+\}
通过允许除 {
之外的任何字符出现一次或多次 in-between[=14=,从相关的开头 {
匹配到相关的结尾 }
]
使用 python json 字符串我可以删除那些不需要的字段,如下所示:
这已经完全删除了不需要的空键并将其替换为},以完美地完成json。
regex as \,\s\\"\\":\s\{\\"updated_at[^{]+\}[^\]]
json_str = str({"tableName":"avzConf","rows":[{"Comp":"mster","Conf": "[{"name": "state", "dispN": "c_d_test", "": {"updated_at": "2020-09-16T06:33:07.684504Z", "updated_by": "Abc_xyzabc_xyz@uuvvww.com"}}, {"name": "stClu", "dNme": "tab(s) Updatedd", "": {"updated_at": "2020-09-21T10:17:48.307874Z", "updated_by": "Def Ghidef_ghi@uuvvww.com"}} }] })
import re
line = re.sub(r"\,\s\\"\\":\s\{\\"updated_at[^{]+\}",'},', json_str)
希望删除介于 json 之间的特定字符串:
例如我的 Json 字符串是:
{"tableName":"avzConf","rows":[{"Comp":"mster","Conf": "[{\"name\": \"state\", \"dispN\": \"c_d_test\", \"\": {\"updated_at\": \"2020-09-16T06:33:07.684504Z\", \"updated_by\": \"Abc_xyz<abc_xyz@uuvvww.com>\"}}, {\"name\": \"stClu\", \"dNme\": \"tab(s) Updatedd\", \"\": {\"updated_at\": \"2020-09-21T10:17:48.307874Z\", \"updated_by\": \"Def Ghi<def_ghi@uuvvww.com>\"}}
}]
}
要删除: \"\": {\"updated_at\": \"2020-09-16T06:33:07.684504Z\", \"updated_by\": \"Abc_xyz<abc_xyz@uuvvww.com>\"}
预期输出:
{"tableName":"avzConf","rows":[{"Comp":"mster","Conf": "[{\"name\": \"state\", \"dispN\": \"c_d_test\"}, {\"name\": \"stClu\", \"dNme\": \"tab(s) Updatedd\"}
}]
}
我试过 ( \"\": {\"updated_\w+)(.*)(>\")
在我的代码中使用:
import re
line = re.sub(r"updated_\w+(.*)(.com>)", '', json_str)
但它也会选择行之间,因为有 2 次出现“”:{"updated_at\ 和 "updated_by"
并留下特殊字符 "": {""}
如何彻底删除 \"\": {\"updated_at\": \"2020-09-16T06:33:07.684504Z\", \"updated_by\": \"Abc_xyz<abc_xyz@uuvvww.com>\"}
?
试试这个:
\{\"updated_at[^{]+\}
通过允许除 {
之外的任何字符出现一次或多次 in-between[=14=,从相关的开头 {
匹配到相关的结尾 }
]
使用 python json 字符串我可以删除那些不需要的字段,如下所示: 这已经完全删除了不需要的空键并将其替换为},以完美地完成json。
regex as \,\s\\"\\":\s\{\\"updated_at[^{]+\}[^\]]
json_str = str({"tableName":"avzConf","rows":[{"Comp":"mster","Conf": "[{"name": "state", "dispN": "c_d_test", "": {"updated_at": "2020-09-16T06:33:07.684504Z", "updated_by": "Abc_xyzabc_xyz@uuvvww.com"}}, {"name": "stClu", "dNme": "tab(s) Updatedd", "": {"updated_at": "2020-09-21T10:17:48.307874Z", "updated_by": "Def Ghidef_ghi@uuvvww.com"}} }] })
import re
line = re.sub(r"\,\s\\"\\":\s\{\\"updated_at[^{]+\}",'},', json_str)