如何编写正则匹配双引号外的边界词,修复不规范JSON的键值引号
修复不规范JSON的正则分步方案
分步处理思路
通过暂存已合法的引号内容,避免后续替换干扰,再统一处理未被包裹的键和值:
暂存已被双引号包裹的内容
- 查找正则:
("(?:\\.|[^"])*")(支持匹配含转义引号的合法字符串) - 替换为:
{{$1}}(用自定义占位符标记,避免后续误处理)
- 查找正则:
为未包裹的键/字符串值添加双引号
- 查找正则:
\b([a-zA-Z0-9@_]+)\b - 替换为:
"$1"
- 查找正则:
恢复暂存的合法引号内容
- 查找正则:
{{"(.*?)"}} - 替换为:
"$1"
- 查找正则:
补充说明
- 如果你的JSON里没有转义引号,第一步的正则可以简化为
(".*?") - 若存在非字母数字下划线@的标识符,需要调整第二步的正则字符范围,比如包含短横线的话改成
\b([a-zA-Z0-9@_-]+)\b
内容的提问来源于stack exchange,提问作者Steven Price
相关产品推荐
相关产品推荐

