正则表达式
知识库简介
正则表达式(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基础 中的字符串、函数和文件读取部分。
推荐学习顺序
- 任务建模与引擎差异:先判断是否真的需要正则,并固定目标引擎。
- 基础字符与字符类:从单个字符开始,分清字面字符、元字符和 Unicode 字符类。
- 边界与数量词:限定位置、长度和重复次数。
- 分组、分支与反向引用:组合规则、提取字段并复用已捕获内容。
- 先行与后行断言:检查上下文但不把它纳入结果。
- 标志与替换:理解跨引擎标志和替换引用。
- Python re 与 PowerShell 实用 API:运行搜索、完整匹配、迭代提取和替换代码。
- 性能与调试:识别回溯、ReDoS、输入边界与引擎取舍。
- Python 日志解析项目与自测:在明确输入契约下完成提取、错误定位和回归测试。
示例约定
regex代码块中的内容是正则模式本身,例如\d+。- Python 模式通常写成 raw string,例如
re.compile(r"\d+");PowerShell 模式优先放在单引号字符串中,例如'\d+'。 - JavaScript 的正则字面量写成
/\d+/g,最后的g是标志;Python 没有g标志,而是用finditer、findall或sub处理全部结果。 - 若把模式放入普通程序字符串,还要经过宿主语言的字符串解析。始终分开检查“字符串值”和“正则含义”两层。
- “匹配结果”只列出匹配到的文本;是否返回位置、捕获组或全部结果,还取决于调用的 API。
学习建议
- 先在短字符串上验证规则,再用于真实数据。
- 每次只增加一个条件,并记录它是否改变了匹配结果。
- 涉及用户名、邮箱、日期等业务数据时,先写清楚允许与禁止的格式;正则只负责结构,不自动保证真实有效性。
- 规则变复杂时,优先拆分、添加注释或写单元测试,不要依赖难以维护的“一行万能正则”。
动手实践与项目入口
- API 热身见 Python re 与 PowerShell 实用 API。
- 综合项目见 Python 日志解析项目与自测。脚本只读虚构日志,使用
re.VERBOSE、命名组与fullmatch;独立unittest覆盖正例、反例、Unicode 数字、长度边界和长输入。
掌握标准
- 能解释字符类、边界、数量词、分组、断言与标志的作用范围。
- 能说清
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。引擎语法会演进,使用前仍应核对部署环境。