第 1 课

什么是正则表达式

把模式当作搜索程序,以及开发中的 Regex 场景。

正则表达式(Regular Expression,常简称 regex) 是一种描述 文本模式 的紧凑语言。你不是搜索固定字符串 error,而是搜索一种 形状:数字、引号内的值、类似邮箱的片段,或符合模板的日志行。

模式,而非纯文本

可以把正则理解为在 正则引擎 里运行的小程序:

  1. 提供 模式(正则本身)
  2. 提供 输入文本(字符串、文件片段或缓冲区)
  3. 引擎返回 匹配——符合模式的子串——以及可选的 捕获组

直观例子:\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 处理方式
  • 前瞻/后顾是否支持
  • 默认贪婪程度与行尾规则

从其他语言复制模式时,务必在目标引擎中重新测试

要点

正则描述的是 字符串集合,而不是某一个字符串。后续课时将讲解构成这些集合的字面量、字符类、量词、修饰符与分组。

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览