让AI写正则替换:用十行正反例,确认只改三个镜头编号

想把素材清单里的镜头前缀从 SHOT 改为 SCENE,又怕把备注、备份名一起改掉?本练习让 AI 提出正则规则,再用十行假数据检查它到底会改什么。只处理文本清单,不改磁盘上的文件名。

适合谁:需要批量清理编号、但不熟悉正则的剪辑师和文档编辑。准备电脑、纯文本编辑器和已有的 AI 文本问答工具。本文以免费 VS Code 的当前文件查找替换为例,不需要 Copilot、扩展或 API;AI 服务可能有额度或订阅限制,使用前看自己账户说明。只向 AI 提供下面的合成数据,不上传客户路径或真实项目清单。

1. 先把“允许改什么”写成规则

本次只改独占一整行、大写 SHOT- 加四位半角数字的条目,保留四位数字及前导零。大小写不同、数字少一位或多一位、前后带空格或后缀的行都不改。别先让 AI 发挥,再猜它的意图。

新建 test-before.txt,粘贴以下十行。第九行开头故意保留一个半角空格:

SHOT-0001
SHOT-0042
SHOT-9000
SHOT-1
SHOT-00001
shot-0001
SHOT-00A1
SHOT-0001.backup
 SHOT-0001
# SHOT-0001

手工先标答案:只有前面三行允许变化,后七行必须逐字保留。这份名单是验收依据,不能随 AI 输出一起改。

2. 把测试和规则一起交给 AI

请为 VS Code 当前文件查找替换设计一个正则。任务仅为文本清单,不是文件重命名。
只匹配整行“大写 SHOT- + 四位ASCII数字”,替换为 SCENE- 并原样保留数字。其他字符、空格、大小写和行顺序不变。
先输出:查找框内容、替换框内容、需要开启/关闭的选项、每一行是否匹配及理由。不要执行命令,不要建议全目录替换。找不到符合所有反例的规则就说明冲突。
验收:上面十行仅前3行改变。请指出小写、5位数字、带后缀、前置空格为什么应排除。
[在这里粘贴十行样本]

一个符合这组边界的候选是:

查找:^SHOT-([0-9]{4})$
替换:SCENE-$1
开启:正则表达式、区分大小写
关闭:保留大小写、全字匹配
范围:当前测试文件

这里 ^ 和 $ 限定行边界,括号保存四位数字,$1 把第一组原样放回。别把给 JavaScript 写的 /规则/g 外壳或 Python 的 \1 替换格式一起粘进 VS Code。不同工具的规则和替换语法不一定一致。可对照MDN 正则说明理解基本符号,再以目标工具实际查找结果为准。

3. 先看命中,再在副本上替换

  1. 将 test-before.txt 另存为 test-after.txt,保留前者不动。打开后者,用菜单进入当前文件的查找替换。
  2. 开启“正则表达式”和“区分大小写”,关闭“保留大小写”和“全字匹配”。填入候选,不带额外引号或斜杠。
  3. 先只查找,应显示恰好三个命中。逐个跳转,看高亮是否覆盖前三行完整编号;任何反例命中就停止。
  4. 输入替换内容,先替换第一个,确认是 SCENE-0001,不是 SCENE-1 或字面量 SCENE-$1。
  5. 再处理剩下两处,保存副本。前后并排比较,允许的差异只有三处前缀。

VS Code 官方编辑文档区分当前文件查找、选区查找和跨文件搜索。本文故意限定单个练习副本;以后确实要跨文件处理时,也应先限定文件范围并逐项查看替换差异,而不是直接点击全量替换。

4. 验收不只看“替换成功”

  • 前3行分别为 SCENE-0001、SCENE-0042、SCENE-9000。
  • 后7行、总行数和行顺序不变;第9行前置空格仍在。
  • 对结果再查同一规则,命中为0。这个检查只能说明没有剩余目标,还必须与前后差异检查一起做。
  • 取消或失败后,原始 test-before.txt 仍可打开,且未覆盖。

若多匹配了行,先查区分大小写、锚点和数字位数;若零匹配,检查复制时是否混入全角横线、全角数字或不可见字符。不要为了凑到三个命中直接放宽成 .*。把出错的合成反例和预期结果交给 AI 修规则,重新跑全部十行,再增加一组未给 AI 看过的同类样本。

如果你要改的不是清单文字,而是磁盘上的真实文件名,请改用另一套预览流程:先让 AI 列改名清单,再用 PowerRename 只做预览;本文的文本替换不会重命名文件。

本文样本和流程为原创练习,2026年10月28日核对官方文档;自动检查仅覆盖所列合成字符串,不代表已实测你的 VS Code 版本或真实资料。GitHub 学习来自微软官方文档源码:将“限定范围、先看差异”落实为明确步骤,而非把 AI 的解释当作执行结果。

© 版权声明

相关文章