正则表达式速查表
把正则表达式最常用的元字符、量词、分组和断言整理成速查表,写正则时对照查不用记。
返回 Web 服务字符类 Character Class 8
.匹配任意单个字符(不含换行符,除非 /s 标志)
\d \D数字 / 非数字,等价于 [0-9] / [^0-9]
\w \W单词字符 / 非单词字符,等价于 [a-zA-Z0-9_] / [^a-zA-Z0-9_]
\s \S空白 / 非空白(空格、Tab、换行等)
\b \B单词边界 / 非单词边界(零宽匹配)
[abc]匹配 a、b 或 c 中任意一个
[^abc]匹配除 a、b、c 外的任意字符
[a-z]匹配 a 到 z 范围内的字符
量词 Quantifier 7
*匹配 0 次或多次(贪婪)
+匹配 1 次或多次(贪婪)
?匹配 0 次或 1 次(可选)
{n}恰好匹配 n 次
{n,}至少匹配 n 次
{n,m}匹配 n 到 m 次
*? +? ??惰性匹配(非贪婪),尽可能少匹配
锚点与分支 Anchor & Alternation 5
^匹配行首(多行模式下匹配每行开头)
$匹配行尾
\A \Z字符串开头 / 结尾(Python,不受多行模式影响)
a|b匹配 a 或 b
(abc|xyz)分组中的分支,匹配 abc 或 xyz
分组与捕获 Group & Capture 8
(pattern)捕获分组,可反向引用 \1
(?:pattern)非捕获分组,不保存匹配结果
(?P<name>pattern)命名捕获组(Python 语法),JS 用 (?<name>pattern)
\1 \2反向引用第 n 个捕获组
(?=pattern)正向先行断言(后面要匹配 pattern)
(?!pattern)负向先行断言(后面不匹配 pattern)
(?<=pattern)正向后行断言(前面已匹配 pattern)
(?<!pattern)负向后行断言(前面不匹配 pattern)
常用模式 Common Patterns 7
^\d{4}-\d{2}-\d{2}$日期格式 YYYY-MM-DD
^\d{1,3}(\.\d{1,3}){3}$IPv4 地址(简化版,未校验范围)
^[\w.-]+@[\w.-]+\.\w+$邮箱地址(简化版)
^https?://[\w.-]+HTTP/HTTPS URL 开头
\b\d+\.\d+\.\d+\.\d+\b从文本中提取所有 IPv4 地址
"[^"]*"匹配双引号字符串(不含转义)
^#[0-9a-fA-F]{6}$十六进制颜色码 #RRGGBB
标志 Flag 5
g全局匹配(找到所有匹配项)
i忽略大小写
m多行模式(^ 和 $ 匹配每行)
s单行模式(. 匹配换行符)
uUnicode 模式(正确处理中文等)
💡 提示
- 贪婪匹配 .* 会尽可能多匹配,容易过度捕获,需要惰性匹配时用 .*?。
- grep 默认使用 BRE(基本正则),+、?、| 需转义或用 grep -E(ERE)。
- 命名捕获组语法不统一:Python (?P<name>),JavaScript/Java (?<name>),PHP/(?P<name>)。