正则表达式删除选择性字符串

时间:2020-09-21 14:03:36

标签: json regex string re python-regex

嗨,我是正则表达式的新手,想在python中使用它

试图删除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_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“}} }] }

要删除:“”:{“ updated_at”:“ 2020-09-16T06:33:07.684504Z”,“ updated_by”:“ Abc_xyzabc_xyz@uuvvww.com”}

预期输出: {“ tableName”:“ avzConf”,“ rows”:[{“ Comp”:“ mster”,“ Conf”:“ [{” name“:” state“ ,“ dispN”:“ c_d_test”},{“名称”:“ stClu”,“ dNme”:“标签已更新”} }] }

我尝试过((\“ \”:{\“ updated_ \ w +)(。*)(> \”)

在我的代码中使用:

重新导入

line = re.sub(r“ updated_ \ w +(。*)(。com>)”,'',json_str)

但是它也选择了行之间,因为出现了两次“”:{“ updated_at \和“ updated_by”

并保留特殊字符“”:{“”}

如何完全删除“”:{“ updated_at”:“ 2020-09-16T06:33:07.684504Z”,“ updated_by”:“ Abc_xyzabc_xyz@uuvvww.com”}

2 个答案:

答案 0 :(得分:1)

尝试一下:

\{\"updated_at[^{]+\}

通过允许除{以外的任何字符在两者之间出现一次或多次,将其从相关的开头}匹配到相关的结束{

答案 1 :(得分:0)

使用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)