编写正则表达式,特别是在需要匹配多层嵌套括号、处理转义字符、并区分中英文标点符号时,手动调试往往非常繁琐且容易出错。边界条件一多就容易遗漏,反复修改仍难以保证准确性。CodeGeeX 这款工具能够通过自然语言描述需求,直接生成可运行的正则表达式骨架,并在本地环境中实时验证捕获逻辑与替换效果。下面详细拆解具体操作步骤。

安装并启动 CodeGeeX 插件
打开 VS Code,点击左侧扩展图标,搜索「CodeGeex」,点击「Install」安装官方插件,安装完成后重启编辑器。首次启动需要配置模型服务:点击右下角状态栏的「CodeGeex」图标,选择「Start Local Server」,等待控制台输出「Server ready on http://127.0.0.1:8080」后即可使用。如果服务窗口没有自动弹出,手动访问该地址以确认服务是否已就绪。
用自然语言描述需求,生成正则表达式骨架
新建一个 .txt 文件,输入类似这样的描述:
「匹配形如 (abc[def]{ghi}) 的嵌套括号结构,支持圆括号、方括号、花括号三层任意嵌套,忽略中间空格,但要求最外层必须是圆括号;内部字符串允许含中文、英文、数字及常见标点(不包括反斜杠和未配对引号)」
选中整段文字,右键选择「CodeGeex: Generate Regex from Selection」,等待几秒钟,光标处就会插入类似 (([^()[]{}]*?(?:[(?:[^[]]|[[^[]]*?])*?]|{(?:[^{}]|{[^{}]*?})*?}|([^()[]{}]*?))*?[^()[]{}]*?)) 的表达式。
这一步生成的是可工作的基础骨架——但注意,它就像汽车的车架,外壳、内饰都还没装。它没有处理转义,没有限制中文标点范围,也没有排除反斜杠,后续必须人工校验。
在 Regex101 中导入并实时验证
方法一:直接粘贴验证。打开 regex101.com,左上角 Language 选「Python」,把 CodeGeeX 生成的正则粘贴到正则框,在 Test String 区域输入测试文本,比如 (a[b{c}d]e) 和 [x(y)z],观察右侧 Match Information 是否只高亮第一个字符串。
方法二:启用 Substitution 实时查看替换效果。点击「Substitution」标签页,在 Replace 框输入 $0。如果原始正则没有开启全局匹配(g 标志),则只会替换第一个匹配项。务必勾选 g 和 s 标志,否则多行文本中的换行符无法被 . 匹配,嵌套跨行时就会失败。
四步人工优化正则表达式
第一步:转义处理。检查生成正则中所有字面量括号(如 (、[、{)是否已正确添加反斜杠。如果未加,需要补全为 \(、\[、\{,否则在 Python 中会触发 SyntaxError。
第二步:限定中文标点范围。将模糊的 [u4e00-u9fa5] 替换为明确集合,例如 [u4e00-u9fa5\u3001-\u3002\uff0c\uff0e\uff1b\uff1a\u201c\u201d\u2018\u2019\u300a\u300b\u3008\u3009],避免误匹配全角 ASCII 符号。
第三步:排除反斜杠。在字符类中显式加入 [^\\] 或 (? 前置断言,防止匹配到 \( 这类转义括号,否则嵌套逻辑会错乱。
第四步:排除未配对引号。在主匹配模式末尾添加负向先行断言 (?![^'"]*['"]$),确保结尾不悬空单/双引号。否则 (a"b) 这类情况会被错误捕获。
