Agent Skills
返回列表
💻

正则表达式编写

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f12a44b7/self-dev-regex。

技能介绍

解决什么问题

写正则时最容易翻车的地方,往往不是“能不能匹配”,而是量词边界、转义字符、锚点模式、分组作用域和回溯性能一起叠加后,产生难以预期的结果。比如 .* 默认贪婪,会尽量吞掉后续内容;^ 与 $ 在单行和多行模式下含义不同;嵌套量词如 (a+)+ 可能引发灾难性回溯。这个技能把这些高频坑整理成可直接查阅的编写规则,帮助工程师在写模式前先确认引擎行为和边界条件。

技能如何工作

内容围绕正则表达式的核心构件展开:

  • 量词与惰性匹配:区分 +、*、{n,} 的默认贪婪行为,以及 +?、*?、{n,}? 的最小匹配行为。
  • 转义与字符类:明确元字符需要 \.、\* 等转义,以及 [] 内只需重点处理 ]、\、^、-。
  • 锚点与边界:对比 ^、$、\A、\Z 和 \b 的适用场景,避免把“行首行尾”误当成“字符串首尾”。
  • 分组与断言:说明捕获组 ( )、非捕获组 (?: )、命名分组、反向引用,以及 lookahead / lookbehind 的断言语义。
  • 性能与误用:指出 ++、*+、原子组 (?>...) 可减少无意义回溯,并提醒不要用正则处理 HTML/XML 或复杂 URL 解析。

适用边界与注意点

这份资料适合用于字符串提取、校验前置、日志清洗和模式调试,不适合作为完整解析器替代。正则能力高度依赖引擎:Go 的 RE2 不支持反向引用和 lookahead,PCRE 支持更完整的断言与 possessive 语法。使用前应确认目标引擎文档,并重点测试空字符串、特殊字符、Unicode 和超长输入等边界情况。

使用场景

  • 在清洗日志时,从一行文本中提取带端口的服务名,并避免贪婪量词吞掉后续字段。
  • 编写用户输入校验时,区分捕获组与非捕获组,并为特殊字符使用正确的转义序列。
  • 调试复杂匹配时,确认目标引擎是否支持 lookbehind、原子组或反向引用,避免写出不可移植模式。
  • 处理多行文本时,明确 ^ $ 在 multiline 模式下的行边界含义,而不是整串首尾。

适合人员

  • 负责后端接口校验的后端工程师,需要在不引入完整解析器时编写安全的用户名、邮箱、令牌匹配规则。
  • 做日志清洗的数据工程师,需要从非结构化日志里提取字段,并避免贪婪匹配和灾难性回溯。
  • 维护爬虫解析规则的全栈工程师,需要从 HTML 片段中快速提取文本,并知道何时应改用解析器。
  • 参与代码审查的技术负责人,需要检查正则是否误用 lookbehind、反向引用或嵌套量词导致兼容与性能问题。