例如,我有这个json:
{"a":"some value", "b":"some value", "c": "some ," value"}
我需要得到:
"a":"some value" and "b":"some value" and "c": "some ," value"
我已经以这个正则表达式(,)(?=(?:[^"]|"[^"]*")*$)
结束,但这不适用于第三个键值对。
如果你真的必须用正则表达式来做到这一点,那么你可以尝试:
(".*?(?<!\)")s*:s*(".*?(?<!\)")
(".*?
- 启动捕获组并匹配左双引号,并延迟匹配零个或多个任何字符(?<!\)
- 确保不在结束双引号之前
")
- 查找结束双引号并关闭捕获组s*:s*
- 匹配由可选空格包围的冒号:
(".*?(?<!\)")
- 请参阅要点 1 至 3
https://regex101.com/r/25qa84/1