javascript - 用于处理 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":""}]
}
我该如何解决这个问题?
解决方案
此正则表达式将解决您的问题:
(("")(?!(,|})))|((?<!:)(""))
解释:
此正则表达式捕获所有""
不以'
or结尾的 s}
(("")(?!(,|})))
此正则表达式捕获所有""
不以开头的 s:
((?<!:)(""))
理论:
负前瞻
(?!...)
从表达式中的当前位置开始,确保给定的模式不会匹配。不消耗字符。
例如:
/foo(?!bar)/
foobar **
foo
**酒吧
消极的回顾
(?<!...)
确保给定的模式不会匹配并在表达式中的当前位置结束。图案必须具有固定宽度。不消耗字符。
例如:
/(?<!not )foo/
不是富而是
foo
推荐阅读
- angular - 角度错误 - 通用类型“ModuleWithProviders”
' 需要 1 个类型参数 - javascript - 如何在不使用 JavaScript 中的内置函数的情况下将 base64 转换为十六进制字符串
- django - 如何解决 Django 中的图像调整大小问题?
- angular - 角度不能用于相同标签的切换动作
- reactjs - 如何在新的获取请求中取消先前的获取请求?
- bash - 了解输出到标准输出和常规文件的区别
- c# - 如何通过组合来自两个集合的数据来创建一个集合?
- kubernetes - Kafka 无法连接到 EKS 上的 zookeeper 合奏
- python - 如何在一个字段中选择多个值?
- c++ - 复制构造函数、赋值运算符 C++