第 1 课
什么是正则表达式
把模式当作搜索程序,以及开发中的 Regex 场景。
正则表达式(Regular Expression,常简称 regex) 是一种描述 文本模式 的紧凑语言。你不是搜索固定字符串 error,而是搜索一种 形状:数字、引号内的值、类似邮箱的片段,或符合模板的日志行。
模式,而非纯文本
可以把正则理解为在 正则引擎 里运行的小程序:
- 提供 模式(正则本身)
- 提供 输入文本(字符串、文件片段或缓冲区)
- 引擎返回 匹配——符合模式的子串——以及可选的 捕获组
直观例子:\d{4}-\d{2}-\d{2} 表示「四位数字、连字符、两位数字、连字符、两位数字」——常见的 ISO 日期形态。这与搜索某一个固定日期不是一回事。
开发中的常见用途
- 校验提示 — 邮箱、电话、slug 格式(通常还需更强校验配合)
- 日志解析 — 从无结构行里提取时间戳、状态码或请求 ID
- 重构 — 用捕获组在多文件间查找替换
- 高亮与 Lint — 对代码分词(多为精心调过的模式)
- 路由与重写 — Apache/Nginx location、部分框架路径规则
正则擅长处理文本里的 局部结构。嵌套 HTML、完整 JSON 或任意编程语言语法,应使用专用解析器。
引擎并不相同
JavaScript 的 RegExp、Python 的 re、PHP/grep 中的 PCRE、Rust 的 regex 等 行为并不完全一致,差异包括:
- 元字符集合与 Unicode 处理方式
- 前瞻/后顾是否支持
- 默认贪婪程度与行尾规则
从其他语言复制模式时,务必在目标引擎中重新测试。
要点
正则描述的是 字符串集合,而不是某一个字符串。后续课时将讲解构成这些集合的字面量、字符类、量词、修饰符与分组。