测试工程师用 AI 写正则表达式:描述规则让 AI 生成并解释
作为负责功能测试、接口测试和回归测试的 QA,你可能也有同感:需求变化快,测试用例、缺陷报告和测试报告要反复写,边界场景还容易漏。正则表达式功能强大但难写难读,用自然语言描述规则让 AI 生成,再用测试样例验证,是最省事的做法。下面以测试工程师的真实场景为例,演示用 AI 写正则表达式的完整流程:给 AI 提供规则描述、应该匹配和不应该匹配的样例,让它生成正则并逐段解释,再在测试工具中验证。
典型场景
测试工程师需要从一堆文本里批量提取或替换内容,比如从“缺陷记录”导出的文本中找出日期、编号或金额。手动处理几百条太慢,自己写正则又总是写错。而且测试工程师手上通常同时压着“执行支付链路回归测试”之类的事情,如果每次都从零开始,很容易顾此失彼。
推荐工具
可以用 ChatGPT、Claude、DeepSeek 等对话助手生成正则,用 regex101 等在线工具测试;VS Code、Cursor 等编辑器的 AI 助手也能直接在文件中生成和应用。
生成正则用对话助手,验证用正则测试工具或编辑器的查找替换功能。
案例:一次完整的使用过程(虚构)
先看一个虚构但很典型的例子。老何是一位负责功能测试、接口测试和回归测试的 QA,这周手头的事情包括“完成会员中心 2.3 版本功能测试”和“推动高优先级缺陷关闭”,偏偏这时又需要写正则表达式。老何没有从空白页开始,而是先花几分钟把相关材料整理好,按下面的提示词交给 AI,拿到初稿后对照原始资料逐条核对,再补上自己的判断。整个过程中,老何特别留意不把测试账号密码、生产数据和未公开的版本信息放进对话里。
分步操作
- 说明使用环境:Python、JavaScript、Excel 还是编辑器查找替换
- 描述规则,并提供 3-5 个应该匹配的例子
- 让 AI 生成正则并逐段解释
- 在测试工具中用真实样例验证后再批量使用
提示词示例
把方括号和括号里的内容换成你自己的信息即可:
【背景】最近在处理“完成会员中心 2.3 版本功能测试”,同时要准备“推动高优先级缺陷关闭”。
请帮我写一个 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 大致会给出什么样的结果):
日期
(\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 列出的用例只是候选清单,覆盖是否充分仍要结合需求和历史缺陷人工把关。
一个容易被忽略的习惯:把需求文档原文给 AI,让它按等价类、边界值、异常流分别列用例。
还可以这样用
- 表单校验:手机号、邮箱、身份证号等格式校验(注意隐私)。
- 解释正则:把看不懂的正则交给 AI,让它逐段说明。