正则表达式

知识库简介

正则表达式(Regular Expression,常简称 Regex 或 RegExp)是一种描述文本模式的小语言。它适合搜索、提取、受控格式校验、批量替换和日志粗解析;它不理解业务含义,也不适合完整解析 JSON、HTML、编程语言或自然语言。本库从任务建模开始,以 Python re 作为可运行基线,并补充 Windows 11 / PowerShell 7 使用的 .NET 引擎差异。

先确认所用引擎

“正则语法”不是单一标准。Python re、PowerShell/.NET、ECMAScript、GNU grep 与 RE2 在字符类、组名、后行断言、替换引用和回溯行为上都有差异。课程中的纯 regex 代码块只表示模式;可运行示例优先使用本机 Python 3.11+ 和 PowerShell 7,并在使用引擎特性时明确标注。

在总路线中的位置

本库位于工程基础阶段。Agent 工程常用正则做日志筛选、结构粗检、标识符提取和脱敏,但不应让一条正则承担完整 JSON 解析、自然语言理解或业务真实性验证。

学习目标

完成后应能:

  • 从普通字符、字符类、边界和数量词逐步构造模式;
  • 先区分字面搜索、通配符、正则和专用解析器,再选择工具;
  • 正确选择搜索、完整匹配、提取和替换;
  • 区分模式转义与编程语言字符串转义;
  • 在 Python re 与 PowerShell/.NET 中调用常用匹配 API;
  • 识别引擎差异、灾难性回溯和不可信输入风险;
  • 为模式写正例、反例、边界与性能测试;
  • 用 Python re 完成一次日志解析项目。

前置知识

会阅读字符串和运行一条 PowerShell 命令即可。综合项目只用 Python 3 标准库,不需要第三方包、网络或 API key。建议先完成 Python基础 中的字符串、函数和文件读取部分。

推荐学习顺序

  1. 任务建模与引擎差异:先判断是否真的需要正则,并固定目标引擎。
  2. 基础字符与字符类:从单个字符开始,分清字面字符、元字符和 Unicode 字符类。
  3. 边界与数量词:限定位置、长度和重复次数。
  4. 分组、分支与反向引用:组合规则、提取字段并复用已捕获内容。
  5. 先行与后行断言:检查上下文但不把它纳入结果。
  6. 标志与替换:理解跨引擎标志和替换引用。
  7. Python re 与 PowerShell 实用 API:运行搜索、完整匹配、迭代提取和替换代码。
  8. 性能与调试:识别回溯、ReDoS、输入边界与引擎取舍。
  9. Python 日志解析项目与自测:在明确输入契约下完成提取、错误定位和回归测试。

示例约定

  • regex 代码块中的内容是正则模式本身,例如 \d+。
  • Python 模式通常写成 raw string,例如 re.compile(r"\d+");PowerShell 模式优先放在单引号字符串中,例如 '\d+'。
  • JavaScript 的正则字面量写成 /\d+/g,最后的 g 是标志;Python 没有 g 标志,而是用 finditer、findall 或 sub 处理全部结果。
  • 若把模式放入普通程序字符串,还要经过宿主语言的字符串解析。始终分开检查“字符串值”和“正则含义”两层。
  • “匹配结果”只列出匹配到的文本;是否返回位置、捕获组或全部结果,还取决于调用的 API。

学习建议

  • 先在短字符串上验证规则,再用于真实数据。
  • 每次只增加一个条件,并记录它是否改变了匹配结果。
  • 涉及用户名、邮箱、日期等业务数据时,先写清楚允许与禁止的格式;正则只负责结构,不自动保证真实有效性。
  • 规则变复杂时,优先拆分、添加注释或写单元测试,不要依赖难以维护的“一行万能正则”。

动手实践与项目入口

掌握标准

  • 能解释字符类、边界、数量词、分组、断言与标志的作用范围。
  • 能说清 search、match、fullmatch 与全局查找的差异。
  • 在 Python 中优先使用 raw string 表达含反斜杠模式。
  • 对用户提供的字面文本使用 re.escape,不直接拼接为模式。
  • 每条业务模式都有正例、反例、边界与超长输入测试。
  • 复杂嵌套数量词先做性能审查,必要时改用解析器或分步逻辑。
  • 能运行日志项目并定位具体失败行,不静默跳过脏数据。

与其他知识库的关系

后续知识库连接点
Python基础使用 re API、异常、测试和文件读取。
数据清洗正则适合局部模式,不替代完整解析和质量规则。
运行监控从日志提取字段前先固定日志契约并控制基数。
AI安全防范正则拒绝服务(ReDoS)、错误脱敏和不可信模式。

主要参考资料

核验日期:2026-07-14。本轮以 Python 3.14.6 文档、PowerShell 7.6 / .NET 文档为当前来源基线;本机实操环境为 Python 3.11.9 与 PowerShell 7.6.1。引擎语法会演进,使用前仍应核对部署环境。