AI 怎么写正则表达式
正则里的量词和转义最容易出错。这篇讲怎么把规则和样例一起交给 AI、怎么让它逐段解释,以及怎么用正反例在原环境里验完再用。
从一堆日志里挑出符合条件的行,或者从一段文本里批量抽出订单号、链接,手写正则往往要试半天。把规则和样例一起交给 AI 能省掉大部分试错,前提是你给的材料够它判断对错。这篇讲要准备什么、怎么提问,以及怎么确认它给的表达式真的可用。
入口在哪
不需要装插件,任何对话式 AI 都能做,差别只在怎么开口。三个入口:
- 对话输入框:描述规则再加样例,让它先给自然语言描述,再给表达式。
- 编辑器补全:写到一半让它接着补完,适合已经知道大致形态的情况。
- 解释入口:拿一个别人写的长正则,让它逐段拆开讲。
开口前先定一件事:这个正则最终跑在哪里。不同工具支持的写法不一样,先说清环境,它才能避开不兼容的语法。
具体步骤
- 先用中文把规则写成人话:从哪里开始、中间允许什么、到哪里结束。写不出来说明规则还没想清,这时问 AI 只会更模糊。
- 准备样例,这是最关键的一步。三到五条应该匹配的,再准备两三条看起来像但不该匹配的。
- 说明运行环境:表格软件、脚本语言,还是命令行的搜索工具。
- 要求先给一句自然语言描述,再给表达式。描述和预期不一致时先改描述。
- 要求逐段解释每个符号在做什么,重点是括号、量词和转义。
- 让它用样例自测一遍,逐条列出判定结果,而不是只回一句可以匹配。
- 放进真实环境再跑一次。网页测试器通过,不等于在程序里通过。
几个坑
- 只说匹配手机号这类模糊需求。号码规则各处不同,它只能自己编一套,往往漏掉你要的格式。
- 忽略方言差异。有的引擎不支持后行断言或回溯引用,测试网站上能过,进程序直接报错。
- 把中文算成字母。开启 Unicode 后,字母和数字的简写会把中文也算进去,按只匹配英文和数字写的规则就失效了。
- 贪婪匹配吃掉中间内容。两个目标之间的字符被一并吞下,要限定字符集或改成非贪婪。
- 漏了首尾锚点。没写行首行尾的约束,会匹配到一行中间的片段,做替换时容易改坏旁边的内容。
- 直接拿去做批量替换。替换没有撤销,先在副本上跑,命中数量对上再动原文件。
怎么验证
最稳的做法是把样例做成对照表:每条后面写清应该匹配还是不应该匹配,逐条跑完再比对。数量对不上,说明规则漏了一类情况,回第一步补描述。
第二层是换环境。测试器里通过之后,回到实际使用的工具里再跑一遍同样的样例,方言和转义问题会在这步暴露。
第三层是边界输入:空行、超长的一行、夹着中文和符号的一行,各跑一次。做替换前先只统计命中条数,确认无误再落盘。
常见问题
表达式一跑就把程序卡住
多半是嵌套量词造成的回溯失控,输入一长耗时暴涨。让它把嵌套拆开,用限定字符集替代任意字符匹配,宁可写得长一点。
测试网站能匹配,放进代码里就不行
先查转义,写在字符串里的反斜杠有时要多写一层。再查方言,某个语法是否被支持,要以你实际使用的那个引擎为准。
看不懂它写出来的表达式
要求逐段解释每个括号和量词。解释仍然绕,就让它换成拆开的简单写法,比一条谁也看不懂的长表达式好维护。
一句话总结:把规则写成完整的中文描述、配上正例和反例,说明运行环境,要求它先给描述再给表达式,最后在原环境里用样例表和边界输入验完再用。