第 2 课
字面量与元字符
字符类、量词、锚点与转义。
正则语法大致分两类:字面量(匹配自身)与 元字符(有特殊含义的符号)。
字面量与转义
字母和数字通常匹配自身:cat 匹配子串 cat。
. * + ? [ ] ( ) { } | ^ $ \ 等元字符需要特别注意:
.匹配 任意一个字符(部分模式下不含行终止符)- 要匹配字面点号,需转义:
\.
不确定时,可用 字符类 写标点:[.] 匹配点号,避免转义争议。
字符类
[abc] 匹配 a、b、c 中的任意一个字符。
常用简写(以 JavaScript 风格为例):
| 类 | 含义 |
|---|---|
\d | 数字 [0-9] |
\w | 「单词」字符(因引擎而异,常为 [A-Za-z0-9_]) |
\s | 空白 |
\D, \W, \S | 上述的否定 |
范围:[a-z] 表示小写字母。若类内需要字面连字符,把它放在首尾。
量词
对前一个原子重复:
| 量词 | 含义 |
|---|---|
* | 零次或多次 |
+ | 一次或多次 |
? | 零次或一次 |
{3} | 恰好 3 次 |
{2,5} | 2 到 5 次 |
{2,} | 至少 2 次 |
贪婪与惰性: + 尽量多匹配;+? 尽量少匹配。解析带分隔符的字段时差异很大。
锚点
| 锚点 | 含义(常见) |
|---|---|
^ | 输入或行首(多行模式下为行首) |
$ | 输入或行尾 |
\b | 单词边界 |
^https:// 保证 URL 出现在开头(或行首),而不是句子中间。
分组
( ... ) 将原子分组,量词作用于整组:(ab)+ 可匹配 ab、abab 等。
要点
用 小块、可验证的片段 拼模式:锚点 + 字符类 + 量词。每段只做一件事,复杂正则也会更易读。