首页 > 解决方案 > 用于处理 JSON 中“”的正则表达式匹配

问题描述

正则表达式处理涉及双引号的给定输入模式

输入:

{
"adad":""Dip. Clinico E Di Ricerca Clinica-u.o.c.i Divisione ,gg677"","asd":"","dadd":"13213","Finance":[{"Financial_Contact_End_Date":""},{"Financial_Monthly_End_Date":""}]
}

我已经尝试过这个正则表达式来处理提供的输入。

a.replace("\"\"","\"").replaceAll("(:\",)",":\"\",").replaceAll("(:\"})", ":\"\"}")

a.replace("\"\"","\"").replaceAll("(:\",)",":\"\",").replaceAll("(:\"})", ":\"\"}")

预期的:

{
"adad":"Dip. Clinico E Di Ricerca Clinica-u.o.c.i Divisione ,gg677","asd":"","dadd":"13213","Finance":[{"Financial_Contact_End_Date":""},{"Financial_Monthly_End_Date":""}]
}

我该如何解决这个问题?

标签: javascriptregexregex-negationregex-greedy

解决方案


此正则表达式将解决您的问题:

(("")(?!(,|})))|((?<!:)(""))

解释:

此正则表达式捕获所有""不以'or结尾的 s}

(("")(?!(,|})))

此正则表达式捕获所有""不以开头的 s:

((?<!:)(""))

理论:

负前瞻

(?!...)

从表达式中的当前位置开始,确保给定的模式不会匹配。不消耗字符。

例如:

/foo(?!bar)/

foob​​ar ** foo**酒吧

消极的回顾

 (?<!...)

确保给定的模式不会匹配并在表达式中的当前位置结束。图案必须具有固定宽度。不消耗字符。

例如:

/(?<!not )foo/

不是富而是foo


推荐阅读