用ctrl+h正则替换+捕获组+$1引用可一键转换字段为带引号逗号分隔格式;常见失败因字段含不可见空格或换行,需用^\s*(\w+)\s*$或^\s([\w\u4e00-\u9fa5]+)\s$匹配。

直接上结论:用 Ctrl+H 开正则替换 + 捕获组 + $1 引用,就能把原始字段列表一键转成带引号、逗号分隔的测试数据行,无需写脚本或切编辑器。
为什么 ^(\w+)$ 查不到你粘贴的字段名?
常见错误是直接复制 Excel 或文档里的字段(比如 “user_name” 后面带不可见空格或换行),导致 ^(\w+)$ 匹配失败——\w 不匹配空格、制表符、全角字符,更不认换行符。
- 先按
Ctrl+Shift+P→ 输入Set Syntax: Plain Text,确保不是在 HTML 或 Markdown 语法下被干扰 - 用
^\s*(\w+)\s*$匹配,\s*吞掉首尾空白,$1才能干净捕获 - 如果字段含中文或下划线(如
用户ID),改用^\s*([\w\u4e00-\u9fa5]+)\s*$,别依赖\w - 验证是否命中:先点
Find All,看状态栏是否显示“X matches”;没数字就说明正则没对上
Replace All 后多出空行?那是 R 没处理干净
把字段列表转成一行 JSON 数组时,很多人用 (\w+)\n 替换为 "", ,结果末尾多一个逗号+换行,还带个空行——因为最后一行没 \n,最后一条没被替换,而换行符本身又被当独立行留下。
- 分两步走更稳:
第一步:查找(\w+)\n,替换为"$1",(注意无空格)
第二步:查找"(\w+)",\s*$(匹配末尾带逗号的行),替换为"$1" - 或者一步到位:查找
(\w+)(?=\n)(正向先行断言,只匹配后面有换行的字段),替换为"$1",;再单独处理最后一行 - 绝对不要用
^.*$去删空行——它会吞掉所有行尾换行符,导致整篇变一行
生成带键名的 JSON 对象,$1 和 $2 编号容易错
想把 name age city 这种空格分隔的字段,转成 {"name": "xxx", "age": "yyy", "city": "zzz"},必须靠两个捕获组,但括号编号严格按左括号顺序算,嵌套或漏括号就全乱。
- 原始格式如果是每行一个字段:
查找:^(\w+)$
替换:"$1": "",
再手动删末尾逗号、包上{} - 如果是单行多字段(
id name email):
查找:(\w+)\s+(\w+)\s+(\w+)
替换:{"id": "$1", "name": "$2", "email": "$3"}
注意:三个\s+是为了跳过中间任意空格,不是\s*(后者可能吞掉字段) - 别写
(\w+)(?:\s+)(\w+)还想用$2——非捕获组(?:)不占编号,第二个捕获组其实是$1,$2会为空
最易被忽略的点:Sublime v4 默认用 RE2 引擎,不支持 (?i) 内联标志和 \K 重置匹配起点。想忽略大小写,老实用界面右下角 Aa 按钮;想“只替换某部分”,别幻想 \K,老老实实把不需要的部分也放进捕获组里,用 $2 引用要保留的部分。











