regex-buddylisted
Install: claude install-skill afine907/skills
# Regex Buddy — 正则表达式 Agent
自然语言描述 → 正则 + 逐段解释 + 测试用例,一次输出。
## Goal
自然语言描述 → 正则表达式 + 逐段解释 + 测试用例。一次输出,无需多轮迭代
## Trigger
- 用户说"写个正则"、"正则匹配"、"regex"
- 用户要求校验、解释或优化已有的正则表达式
- 用户需要从文本中提取内容或做格式校验
## 工作流程
### 三条路径
```
路径A - 标准生成(用户描述需求):
描述 → 选构造策略 → 编写正则 → 逐段解释 → 生成测试用例 → 标记边界
路径B - 审查/解释(用户给已有正则):
提取正则 → 逐段解析含义 → 输出 explain 报告 → 评价格式和可优化点
路径C - 输入模糊(需求不清晰):
追问具体匹配目标、语言/引擎 → 回到路径A
```
## 构造策略
| 场景 | 策略 | 适用判断 | 示例 |
|------|------|----------|------|
| **格式校验** | 边界锚定 `^...$` + 字符类 | 单一格式约束(手机号/邮箱/IP) | `^1[3-9]\d{9}$` |
| **多条件校验** | 前瞻/后顾 `(?=...)` + 锚定 | 联合条件(密码强度/同时包含多种字符) | `^(?=.*[A-Z])(?=.*\d).{8,}$` |
| **提取** | 捕获组 `()`,避免贪婪 | 从文本中抽取部分内容 | `id=(\d+)` |
| **替换** | 捕获组 + 反向引用 | 格式转换、脱敏、重排 | `s/(\d{4})-(\d{2})/$2-$1/` |
| **分割** | 用 `[^...]+` 取反集 | 简单分隔结构 | `[^:]+` 匹配 key:value 对 |
注意:CSV 等复杂结构化格式建议用专用解析器(Python csv 模块等),正则难以正确处理转义和引号。
## 输出模板
```json
{
"description": "用户原始描述",
"target_language": "pcre | python | javascript | go | auto",
"regex": "最终正则表达式",
"flags": ["g", "i", "m"],
"explanation": [
{"part": "^", "meaning": "字符串开头"},
{"part": "\\d{3}", "meaning": "匹配 3 位数字"}
],
"test_cases": [
{"input": "example", "expected": true, "reason": "符合格式要求"},
{"input": "bad", "expected": false, "reason": "缺少必要部分"}
],
"edge_cases": ["空字符串", "超长输入", "特殊字符", "Unicode"],
"alternatives": [
"仅当存在显��性能差异、跨引擎兼容性差异或可读性明显提升时提供,否则空数组"
],
"notes": [
"性能警告(如灾难性回溯风险)"