You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建正则表达式替换JSON特定行中的方括号为下划线?

解决方案:替换特定JSON行中的方括号为下划线

核心思路

目标是仅替换键部分("data[xxx][yyy][zzz]")里的[为下划线,保留值开头的[以维持JSON数组结构。需分两步操作:先定位符合格式的目标行,再在该行内精准替换指定位置的[。

优化后的目标行匹配正则

简化你原有的多分支正则,用更通用的模式覆盖所有符合格式的行:

"data\[[^\]]+\]\[[^\]]+\]\[[^\]]+\]":\[

解释:

  • \[^\]]+:匹配[和]之间的任意非]字符,适配字母、数字、下划线组合的键名
  • 整体匹配格式为"data[xxx][yyy][zzz]":[的行

精准替换的正则方案

方案1:正向断言匹配(支持VS Code、Python、JavaScript等工具)

仅匹配键内部的[,避免误替换值开头的[:

  • 查找正则:
\[(?=.*":)
  • 替换为:_

解释:(?=.*":)是正向预查,确保匹配的[后面会出现":(属于键的部分),不会改动值开头的数组标记[。

方案2:捕获组拆分替换(兼容性更广)

把行拆分为键部分和值前缀,对键部分单独替换:

  • 查找正则:
("data)(\[.*?\])(\[.*?\])(\[.*?\])(":\[)
  • 替换为:
\1_\2_\3_\4\5

解释:

  • 捕获组\1对应"data,\2对应[BOT],\3对应[123],\4对应[BOT_ID],\5对应":[
  • 替换时将每个捕获组前的[替换为下划线,最终得到"data_BOT_123_BOT_ID":[

示例工具实现

Python代码示例

import re

input_file = "your_file.json"
output_file = "modified_file.json"

# 匹配目标行的正则
line_pattern = re.compile(r'"data\[[^\]]+\]\[[^\]]+\]\[[^\]]+\]":\[')
# 替换键内[的正则
replace_pattern = re.compile(r'\[(?=.*":)')

with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out:
    for line in f_in:
        if line_pattern.search(line):
            # 仅在目标行执行替换
            modified_line = replace_pattern.sub('_', line)
            f_out.write(modified_line)
        else:
            f_out.write(line)

VS Code可视化替换操作

  1. 打开目标文件,按Ctrl+H打开替换面板
  2. 勾选「正则表达式」选项(点击.*图标)
  3. 查找框输入:\[(?=.*":)
  4. 替换框输入:_
  5. 点击「替换全部」,仅会替换符合目标行格式的行内键部分的[

注意事项

  • 确保JSON文件每行格式规范,目标行的"data[xxx][yyy][zzz]":[为单独一行,避免匹配精度受影响
  • 替换前务必备份原文件,防止意外破坏JSON结构

内容的提问来源于stack exchange,提问作者Diego Lopes Penna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:20:20