SuperAPI AI 工具集

regex

编程与开发

查看项目

更新于 10-15 12:34

技能介绍

用途

本技能用于正则表达式的编写、理解与调试,提供语法速查、常用模式配方和跨语言参考。当用户需要“写一个正则”“匹配某个模式”“校验邮箱”等任务时,可借助其中的语法说明与示例完成。

主要能力

核心语法

  • 字符类:.、\d/\D、\w/\W、\s/\S、[abc]、[^abc]、[a-z]、[a-zA-Z],以及 Unicode 属性 \p{L}、\p{N}。
  • 量词:*、+、?、{3}、{3,}、{3,5},以及懒惰版本 *?、+?、?? 和占有版本 *+、++(PCRE/Java)。
  • 锚点与边界:^、$、\b、\B、\A、\Z。
  • 分组与引用:捕获组 (abc)、非捕获组 (?:abc)、命名捕获组 (?<name>abc)(JS/PCRE/.NET)与 (?P<name>abc)(Python)、反向引用 \1、\k<name>、(?P=name)、原子组 (?>abc)。
  • 前后查找:正/负向前查找 (?=abc)、(?!abc),正/负向后查找 (?<=abc)、(?<!abc),并说明各引擎对后查找长度的限制。
  • 标志位:g、i、m、s、u、x,以及内联写法 (?i)、(?i:abc)。

常见模式

提供校验类模式,包括简化邮箱、URL、美国电话、严格 IPv4、YYYY-MM-DD 日期、UUID v4、Semver、十六进制颜色、强密码、Slug、JWT 结构;提取类模式,包括从 URL 取域名、从路径取文件名、数字、键值对、Markdown 链接、日志行;以及替换模式,如姓名调换、camelCase 转 snake_case、删除 console.log 行。

语言级用法

  • JavaScript:字面量与构造函数、test、match、matchAll、replace、命名组、后查找(ES2018+)。
  • Python:re.match、re.search、re.findall、re.sub、re.compile、命名组、re.VERBOSE。
  • Go:regexp.MustCompile、MatchString、FindString、FindAllString、ReplaceAllString、命名组;说明 Go 使用 RE2,不支持反向引用与前后查找,保证线性时间。
  • Rust:regex crate 的 is_match、find、命名捕获;说明其语义类似 RE2,PCRE 特性需用 fancy-regex。

引擎差异对比

以表格形式对比 PCRE、ECMAScript、POSIX ERE、RE2、Python re 在前后查找、命名组、反向引用、原子组、占有量词、Unicode 属性、递归模式上的支持情况。

CLI 与编辑器工具

  • grep:BRE、ERE(-E)、PCRE(-P)、-oirn 组合。
  • sed:替换、扩展正则分组、删除匹配行。
  • awk:模式匹配打印、字段正则匹配。
  • ripgrep:递归搜索、按文件类型过滤、多行匹配、PCRE2、替换输出。
  • VS Code 查找替换:启用正则、捕获组替换、大小写修饰符 \u、\U、\l、\L。

性能与安全

说明嵌套量词导致的灾难性回溯,给出危险与安全写法对照;介绍 ReDoS 缓解措施,包括使用 RE2 类引擎、设置超时、限制输入长度、不从未受信输入构建正则。

Unicode 与多行模式

介绍 \p{L}、CJK 区间、Emoji 属性,JS 中 u 标志的必要性,Python 3 默认 Unicode 行为,以及 m、s 标志和 [\s\S] 跨行匹配。

测试与调试

提及 regex101.com、regexr.com、Python re.DEBUG,并建议增量构建正则。

不适用场景

HTML/XML 应使用解析器,JSON 应使用 JSON.parse,平衡嵌套需解析器生成器,严格邮箱/URL 校验应使用库,超长难读模式应改用代码。

使用方式

该技能以参考文档形式提供,包含语法说明、模式配方与代码示例。用户可在编写或调试正则时查阅对应章节,按语言选择相应示例。

适用场景

文本校验、数据提取、批量替换、日志解析、跨语言正则迁移、CLI 文本处理、编辑器批量编辑等。

限制

资料未提供该技能的安装方式、运行环境要求、收费信息或平台支持范围,暂未提供。部分特性(如后查找、占有量词、原子组)依赖具体引擎,需按引擎差异表确认。