跳到主要内容

正则表达式速查表

正则表达式是文本处理的瑞士军刀,广泛用于 grep、sed、awk、vim、Python、JavaScript、Java 等工具和语言。本速查表按语法类别整理了从基础到高级的正则模式,涵盖字面量匹配、量词、分组与捕获、环视断言、标志位、替换引用以及不同风格的差异,每个语法点都有实际使用示例。

更新: 2026-07-16·32 条命令

使用场景速查

你要做什么用哪个模式
匹配数字\d+[0-9]+
匹配邮箱[\w.]+@\w+\.\w+
匹配 URLhttps?://[\w./]+
提取括号内容\(([^)]+)\)
替换前后文本(?<=before)text(?=after)
忽略大小写/pattern/i 标志位
匹配行首行尾^pattern$

字面量与字符类

``regex # 字面量匹配 hello # 直接匹配 "hello" 字符串 abc123 # 匹配字母数字组合 a\.b # 转义点号(匹配 "a.b" 而不是任意字符) a\\b # 匹配 "a\\b"(反斜杠需要双重转义)

# 字符类 [abc] # 匹配 a、b、c 中任意一个 [a-z] # 小写字母范围 [0-9] # 数字范围 [a-zA-Z0-9_] # 字母数字下划线 [^abc] # 排除 a、b、c(取反) [\s\S] # 匹配任意字符(包括换行)

# 预定义字符类 \d # 数字 [0-9] \D # 非数字 \w # 单词字符 [a-zA-Z0-9_] \W # 非单词字符 \s # 空白字符 [ \t\n\r\f\v] \S # 非空白字符 . # 匹配任意单个字符(默认不包含换行)

# 特殊字符转义 \. \* \\ \( \) \[ \] \+ \? \^ \$ # 元字符转义后匹配字面量 `

量词

`regex # 基础量词 a* # 0 次或多次 a+ # 1 次或多次 a? # 0 次或 1 次(可选) a{3} # 精确匹配 3 次 a{2,5} # 2 到 5 次 a{2,} # 至少 2 次

# 贪婪 vs 非贪婪 a.*b # 贪婪:匹配 a 到最后一个 b a.*?b # 非贪婪:匹配 a 到第一个 b a.+?b # 非贪婪:至少一个字符 a{2,5}? # 非贪婪:尽可能少匹配

# 实用示例 \d{3,4} # 3 或 4 位数字 \w+ # 一个或多个单词字符 https?:// # 匹配 http:// 或 https:// \.\w{2,4}$ # 匹配文件扩展名(2-4个字符) `

分组与捕获

`regex # 捕获组 (abc) # 捕获组 #1 (a)(b)(c) # 三个捕获组 #1, #2, #3 ((a)(b)) # 嵌套捕获组 #1=ab, #2=a, #3=b

# 反向引用(同一模式内) (abc)\1 # 匹配 "abcabc"(\1 引用组 #1) <(\w+)>.*<\/\1> # 匹配 HTML 标签对:... (["'])\w+\1 # 匹配引号内的单词:"hello" 或 'hello'

# 非捕获组 (?:abc) # 分组但不捕获 (?:https?|ftp):// # 匹配协议前缀(http/ftp)

# 命名捕获组(PCRE/Python) (?Ppattern) # Python 命名捕获 (?pattern) # PCRE/JavaScript 命名捕获 \k # 引用命名捕获组

# 原子分组(禁止回溯) (?>pattern) # 原子分组,匹配后不回溯 `

环视断言

`regex # 前瞻断言 (?=pattern) # 肯定前瞻:后面跟着 pattern (?!pattern) # 否定前瞻:后面不跟 pattern

# 后顾断言 (?<=pattern) # 肯定后顾:前面是 pattern (?

# 实用示例 (?<=\$)\d+ # 美元符号后的数字($100 -> 100) \w+(?=\s+is) # "is" 前面的单词 (?!admin)\w+ # 匹配不是 "admin" 的单词 (?

# 复杂环视组合 (?<=@)\w+(?=\.) # 邮箱中 @ 和 . 之间的部分 (?<=).*?(?=) # 提取标签之间的内容 `

标志位

`regex # 常用标志 /i # 忽略大小写 /g # 全局匹配(查找所有匹配) /m # 多行模式(^$ 匹配行首尾) /s # 单行/DOTALL 模式(. 匹配换行) /x # 宽松模式(忽略空格和注释) /u # Unicode 支持 /y # 粘性匹配(从上次结束位置继续)

# 内联标志(模式内) (?i)abc # 从 (?i) 开始忽略大小写 (?i-m)abc # 启用忽略大小写,禁用多行 (?-i) # 关闭忽略大小写

# 组合示例 /^hello/i # 行首的 hello(忽略大小写) /^hello/im # 每行行首的 hello /hello.world/s # hello.world 跨行匹配 `

替换引用

`regex # 替换语法 $1 $2 ... # 引用捕获组(多数语言/工具) \1 \2 ... # 引用捕获组(sed、vim) $& 或 \0 # 整个匹配的文本 $ 或 \ # 匹配前的文本 $' 或 \' # 匹配后的文本

# 实用替换 s/(\w+)@(\w+)/$1 at $2/g # "user@host" -> "user at host" s/(\d{4})-(\d{2})-(\d{2})/$2\/$3\/$1/ # 日期格式转换 2026-07-16 -> 07/16/2026 s/\b(\w)/\U$1/g # 每个单词首字母大写 s/\s+/ /g # 多个空格合并为一个

# 条件替换 s/foo/bar/ # 只替换第一个匹配 s/foo/bar/g # 替换所有匹配 s/(?<=,)\s+/ /g # 逗号后的空格缩为一个

# 大小写转换(部分工具支持) \L...\E # 转小写(sed) \U...\E # 转大写(sed) \l \u # 下一个字符小写/大写 `

风格差异

`bash # BRE(基本正则 - sed/grep 默认) \(abc\) # 需要转义才能捕获 \{3\} # 需要转义才能用量词 a\+ # 需要转义才能匹配 1 次以上 a\|b # 需要转义才能用或

# ERE(扩展正则 - grep -E / sed -E) (abc) # 直接使用捕获组 {3} # 直接使用量词 a+ # 直接使用 + a|b # 直接使用或

# PCRE(Perl 兼容 - Python/JS/Java/PHP) \d+ # 预定义字符类 (?=) (?!) (?<=) (?

# grep 风格 grep 'pattern' file # 基本正则(BRE) grep -E 'pattern' file # 扩展正则(ERE) grep -P 'pattern' file # PCRE(如果支持) grep -o 'pattern' file # 只输出匹配部分

# sed 风格 sed 's/pattern/replacement/' # BRE sed -E 's/pattern/replacement/' # ERE sed -n 's/pattern/replacement/p' # 打印替换结果

# awk 风格 awk '/pattern/ {print}' # ERE 类似 awk '{ gsub(/pattern/, "repl"); print }' # 替换 ``

字面量与字符类(8)

命令难度
.
匹配任意单个字符(默认不包含换行)
基础
[abc]
字符类 — 匹配集合中任意一个字符
基础
[^abc]
否定字符类 — 匹配不在集合中的任意字符
基础
\d / \w / \s
预定义字符类 — 数字、单词字符、空白
基础
\D / \W / \S
预定义字符类的否定形式
基础
\. \* \\ \( \)
转义元字符 — 恢复字面含义
基础
^ $
行首和行尾锚点
基础
\b / \B
单词边界和非单词边界断言
中级

量词(4)

命令难度
* / + / ?
基础量词 — 零次或多次、一次或多次、零次或一次
基础
{n,m}
区间量词 — 精确指定重复次数范围
中级
*? / +? / ??
非贪婪(懒惰)量词 — 尽可能少匹配
中级
.* / .+
任意字符重复 — 匹配任意长度的字符串
基础

分组与捕获(5)

命令难度
(pattern)
捕获组 — 匹配并保存子串供后续引用
基础
(?:pattern)
非捕获组 — 仅分组而不保存匹配
中级
\1 \2 $1 $2
反向引用 — 引用之前捕获组的内容
中级
(?P<name>pattern)
命名捕获组 — 按名称引用捕获内容
高级
(?>pattern)
原子分组 — 匹配后不回溯
高级

环视断言(4)

命令难度
(?=pattern)
肯定前瞻 — 断言后面跟着指定模式
中级
(?!pattern)
否定前瞻 — 断言后面不跟指定模式
中级
(?<=pattern)
肯定后顾 — 断言前面是指定模式
高级
(?<!pattern)
否定后顾 — 断言前面不是指定模式
高级

标志位(5)

命令难度
/i
忽略大小写标志
基础
/g
全局匹配标志(查找所有匹配)
基础
/m
多行模式标志(^$ 匹配行首尾)
中级
/s
单行模式标志(. 匹配换行符)
中级
(?i) inline flag
内联标志 — 在模式中启用/禁用标志
高级

替换引用(3)

命令难度
$1 / \1 backreference
反向引用替换 — 在替换字符串中引用捕获组
中级
$& $MATCH $PREMATCH
特殊替换变量 — 整个匹配、匹配前/后文本
中级
\U / \L / \u / \l
大小写转换替换(sed 等工具)
高级

风格差异(3)

命令难度
BRE -- \( \) \{ \}
基本正则表达式(BRE)— 元字符需要转义
中级
ERE -- ( ) { } + |
扩展正则表达式(ERE)— 元字符直接使用
中级
PCRE -- \d \s \b (?=)
Perl 兼容正则(PCRE)— 最丰富的功能集
中级

常见问题

本速查表数据整理自各工具官方文档。最后更新: 2026-07-16。