怎么用 AI 写正则表达式?
正则写出来能匹配,但会误伤:想匹配手机号,结果把订单号也匹配进去了。或者匹配不到边界情况,上线后才发现。正则的问题从来不是「写不出来」,是「不知道自己写错了」。
这件事该用哪些工具
具体怎么做:四步
用自然语言把规则说全,包括边界
「匹配手机号」不够。要说:中国大陆 11 位、以 1 开头、第二位 3-9、不要匹配前后还有数字的情况。边界条件不写,正则一定漏。
要正例和反例,各 5 条
让它给出「应该匹配」和「不应该匹配」的测试数据,你逐条核对。这一步能发现 90% 的问题。
要求带注释的多行写法
一行写死的正则,三个月后你自己也看不懂。让它用多行 + 注释的写法(多数语言支持 x 标志)。
警惕灾难性回溯
嵌套量词(如 (a+)+)在长文本上会卡死。让它检查回溯风险,或者直接用非回溯写法。
可以直接复制的提示词
把花括号里的内容换成你自己的情况,整段粘进对话框即可。提示词里的要求越具体,输出越能用。
生成正则 + 测试用例
帮我写一个正则表达式。
要匹配的内容:{用自然语言描述,例:中国大陆手机号}
必须满足:
- {规则1,例:11 位数字}
- {规则2,例:以 1 开头,第二位是 3-9}
- {规则3,例:前后不能紧邻其他数字}
不需要匹配:
- {例:带 +86 前缀的、带空格的、固定电话}
使用环境:{语言,例:Python 3.11 re 模块}
请输出:
1. 正则表达式本身
2. 多行带注释的等价写法
3. 5 个应该匹配的正例,和 5 个不应该匹配的反例
4. 逐段解释这个正则的每一部分在做什么
5. 指出潜在的边界问题和回溯风险
6. 如果这个需求用正则不合适,直接告诉我,并说明该用什么方法
不要只给一行正则就结束。解释一段看不懂的正则
下面这段正则我看不懂,请帮我拆解。
{粘贴正则}
请回答:
1. 逐段解释每个部分匹配什么
2. 用 3 个例子说明它实际会匹配到什么
3. 有没有明显的 bug 或可简化的地方
4. 有没有灾难性回溯的风险
5. 如果我要改造成 {新需求},该怎么改
正则:
{粘贴}最容易踩的三个坑
不写边界条件
匹配手机号不加前后边界,`13812345678` 会匹配到 `订单138123456789` 里面的部分。用 \b 或前后断言。
一行写死
半年后没人看得懂,包括你自己。能用多行加注释的写法就用,尤其是超过 30 个字符的正则。
用正则解析结构化数据
用正则解析 HTML、JSON、SQL 会出各种意外。这类数据用专门的解析器,别自己写正则。
常见问题
AI 给的正则为什么总是差一点?
因为你的需求描述里有隐含条件没说出来。补上「前后不能有数字」「必须整行匹配」这类边界,通常一次就对了。
怎么快速测试正则?
用 regex101.com,能实时高亮匹配结果、逐段解释、还可以选语言方言。比自己写脚本试快得多。
中文匹配要注意什么?
注意编码和全角半角。中文逗号、空格、括号和英文的是不同字符,很多「匹配不到」都是这个原因。
其他实操教程
这套流程是实际跑通的,不是理论推演
工具迭代很快,界面和功能可能已经变了。如果你按这个流程做下来卡在某一步,欢迎告诉我们,会核实后补充。