匹配什么
. 除换行以外的任意字符;S 可跨换行。^ $ 首尾位置;M 改为行首尾。$ 也可位于尾换行之前。
[] [^] 字符类与否定类;类内开头 ^ 才是否定。\d \D Unicode 数字及其补集;\w \W Unicode 字母数字、下划线及其补集;\s \S 空白及其补集。
\b 单词边界,不消费字符;原始字符串 r'\b' 避免 Python 把它解释为退格。字符类内 [\b] 是退格。\. 匹配字面点号。
Python 正则表达式实验室 · 元字符、基本函数与综合应用
真实 Python re 预计算的教学预设。离线可用,不执行任意 Python 或任意正则。动画仅展示匹配结果,不是内部回溯执行过程。
索引按 Unicode 码点(与 Python str 一致)。␠ 空格 · ↵ 换行 · ⇥ 制表符;竖线 ∣ 表示零宽位置,不将字符涂成命中。
. 除换行以外的任意字符;S 可跨换行。^ $ 首尾位置;M 改为行首尾。$ 也可位于尾换行之前。
[] [^] 字符类与否定类;类内开头 ^ 才是否定。\d \D Unicode 数字及其补集;\w \W Unicode 字母数字、下划线及其补集;\s \S 空白及其补集。
\b 单词边界,不消费字符;原始字符串 r'\b' 避免 Python 把它解释为退格。字符类内 [\b] 是退格。\. 匹配字面点号。
* + ? {m,n} 分别是 0+、1+、0–1、m–n 次;默认贪婪,追加 ? 改为非贪婪。| 分支按从左到右尝试。
() 捕获组;(?:) 非捕获组;(?P<name>) 命名组。(?=) (?!) (?<=) (?<!) 零宽断言,Python 后行断言必须固定宽度。
r'' 是 Python 字符串语法,不是正则开关;原始字符串也不能以奇数个反斜杠结尾。零长度匹配成功时,span 的起止相同。
search / match / fullmatch → Match 或 None;只校验整个字符串时使用 fullmatch。finditer → Match 迭代器。findall → 列表:无组为全文、一个组为字符串、多个组为元组。
sub → 新字符串;subn → (新字符串, 次数);split → 列表,捕获分隔符也返回;compile → 模式对象;escape → 转义后的模式字符串。不是所有函数都返回新字符串。
group(0) 全部匹配,groups() 捕获元组,groupdict() 命名字典;span / start / end 是半开区间。未参与组为 None / (-1,-1)。I 忽略大小写、M 多行、S 点号跨换行。