每天写业务代码、修线上问题、参加评审的后端或全栈开发,日常工作里真正写代码的时间常被排查问题、写文档和同步进度挤占,很多重复性的文字和样板代码其实可以交给 AI 起草。正则表达式功能强大但难写难读,用自然语言描述规则让 AI 生成,再用测试样例验证,是最省事的做法。这篇文章用一个完整的例子演示程序员如何借助 AI 写正则表达式:给 AI 提供规则描述、应该匹配和不应该匹配的样例,让它生成正则并逐段解释,再在测试工具中验证。

场景:程序员为什么需要 AI 写正则表达式

程序员需要从一堆文本里批量提取或替换内容,比如从“接口调用记录”导出的文本中找出日期、编号或金额。手动处理几百条太慢,自己写正则又总是写错。而且程序员手上通常同时压着“整理缓存方案技术文档”之类的事情,如果每次都从零开始,很容易顾此失彼。

用什么工具

可以用 ChatGPT、Claude、DeepSeek 等对话助手生成正则,用 regex101 等在线工具测试;VS Code、Cursor 等编辑器的 AI 助手也能直接在文件中生成和应用。

生成正则用对话助手,验证用正则测试工具或编辑器的查找替换功能。

举个例子

下面这个例子是虚构的:小孙遇到的难题是“依赖的第三方支付 SDK 下周升级,可能需要适配”。为了不让它拖慢“补齐用户模块的单元测试”的进度,小孙决定借助 AI 写正则表达式。第一次只写了一句简单的要求,结果很空泛;第二次把对象(技术负责人)、目的和限制条件都写清楚,输出就可用多了。这也是本文提示词模板要把背景写全的原因。

具体怎么做

  1. 说明使用环境:Python、JavaScript、Excel 还是编辑器查找替换
  2. 描述规则,并提供 3-5 个应该匹配的例子
  3. 再提供 2-3 个不应该匹配的例子
  4. 让 AI 生成正则并逐段解释
  5. 在测试工具中用真实样例验证后再批量使用

可复用的提示词

把方括号和括号里的内容换成你自己的信息即可:

【背景】身份:每天写业务代码、修线上问题、参加评审的后端或全栈开发;平时主要和业务方同事和技术负责人打交道。
请帮我写一个 Python 正则表达式,用于从文本中提取日期和编号。

规则:
1. 日期格式可能是 2026-10-16、2026/10/16、2026年10月16日
2. 编号格式是两个大写字母加 6 位数字,例如 AB123456

应该匹配:
- “调用日期:2026/10/16,编号 AB123456”
- “2026年9月3日处理的 CD000123”

不应该匹配:
- “AB12345”(只有 5 位数字)
- “2026-13-01”(月份不合法)

请分别给出两个正则,逐段解释,并写一段 Python 示例代码。

AI 输出示例(示意)

示例输出如下(虚构内容,仅演示 AI 大致会给出什么样的结果):

日期

(\d{4})[-/年](0?[1-9]|1[0-2])[-/月](0?[1-9]|[12]\d|3[01])日?
  • (\d{4}):4 位年份
  • [-/年]:分隔符
  • (0?[1-9]|1[0-2]):1-12 月
  • (0?[1-9]|[12]\d|3[01])日?:1-31 日,可选“日”字

编号

\b[A-Z]{2}\d{6}\b

示例代码

import re
text = "2026年9月3日处理的 CD000123"
print(re.findall(r"\b[A-Z]{2}\d{6}\b", text))

注意:中文与字母相邻时 \b 可能不按预期工作,必要时改用 (?<![A-Z0-9]) 和 (?![0-9])。

拿到类似的结果后,小孙的做法是先核对事实和数字,再结合“整理缓存方案技术文档”的安排调整重点,最后才对外使用。

避坑指南

  • 一定要提供不应该匹配的例子,否则 AI 写的正则往往过于宽松。
  • 不同语言的正则语法有细微差异,说明使用环境。

给程序员的特别提醒

让 AI 先解释思路再给代码,便于你判断方向对不对。同时要记住:AI 生成的代码必须经过本地运行、测试和代码评审,不要直接合入主干。

举一反三

  • 数据清洗:去除多余空格、统一标点、删除特殊字符。
  • 编辑器批量替换:在 VS Code 或 Word 通配符中批量改格式。

相关阅读