正则表达式生成器(regex-nl2regex)
把「自然语言描述」转成「可直接使用的正则表达式」,纯本地离线运行,零联网。
核心差异化(对标头部「regex 生成」工具)
- 竞品弱点:多数 regex 工具靠 LLM 提示词,输出不可校验——你不知道它给的表达式对不对、在什么输入下会崩、会不会有性能陷阱;换一个说法就要重问一次。
- 我们:确定性规则引擎 + 四重校验:
1. 自动字段解释——生成的每个片段都说明含义(手机号=1开头/11位…)。
2. 危险回溯预警——扫描(.*){}、(a+)+等可致灾难性回溯(ReDoS)的模式。
3. 自动边界测试——对每个特征生成正反例并逐一跑通,输出 PASS/FAIL 汇总(有据可查)。
4. 命名捕获建议——自动为可提取字段生成命名分组写法(group('phone')),方便直接提取。 - 本地安全:不把文本上传云端,适合处理含敏感信息(手机号/身份证/邮箱)的日志与文档。
快速开始
# 生成一个正则(终端友好输出)
python3 scripts/regex_generator.py --desc "匹配手机号"
# JSON 机器可读输出(供 Agent 或工具调用)
python3 scripts/regex_generator.py --desc "验证邮箱" --json
# 离线演示(内置 5 类示例,不联网)
python3 scripts/regex_generator.py --demo
命令示例
# 特征词识别:手机号 / 邮箱 / 身份证 / IP地址 / 日期 / 时间 / 邮政编码 / 银行卡号 / URL 等
python3 scripts/regex_generator.py --desc "匹配 IP 地址"
# 锚定开头/结尾:描述里含 "开头" / "结尾" 会自动加 ^ / $
python3 scripts/regex_generator.py --desc "匹配开头是邮编号码"
何时使用本技能
用户说以下任一即触发:
- 「生成正则 / 帮我写个正则 / regex 怎么写 / 匹配规则」
- 「匹配手机号 / 邮箱 / 身份证 / IP / 日期 / 时间 / URL」
- 「自然语言转正则 / 正则表达式生成」
- 「我要从文本里提取 xx,用正则怎么写」
工作流(Agent 使用建议)
- 识别需求:从用户描述中提取要匹配的「特征」+「是否锚定开头/结尾」。
- 调用脚本:
regex_generator.py --desc "<特征描述>",拿到逻辑表达式 + 解释 + 测试结果。 - 危险校验:若返回
dangers非空,向用户说明风险并给出更安全的替代写法。 - 交付:把「正则 + 解释 + 测试通过率」一并给用户,标注边界(如仅匹配/需整串校验时用
^...$或fullmatch)。
已知边界
- 特征库当前覆盖:手机号、座机、邮箱、身份证(18位)、IPv4、URL、日期、时间、邮编、银行卡号、小写字母、
.com域名。 - 超出特征库的描述会返回「未能识别特征词」并给出提示,不会硬造一个不可校验的正则。
- 测试基于
search(查找模式);若需整串严格校验,请在描述里加「开头/结尾」或自行使用re.fullmatch。