正则表达式(Regex)是我们在 Python 中用于搜索、匹配、验证和替换文本的模式。这份速查表将为大家提供常用正则表达式模式和符号的快速参考。
基本字符
说明
—
匹配字符串的开头(或在 MULTILINE 模式下的行首)。
匹配字符串的结尾(或在 MULTILINE 模式下的行尾)。
匹配除换行符以外的任意字符。
匹配字符 a。
匹配字符串 xy。
b
Python
CODEBLOCK_10b03047
Output
Explanation:
- ^x 匹配字符串开头的 x
- s$ 匹配字符串结尾的 s
量词
量词定义了一个模式应该出现的次数。
说明
—
匹配前面的表达式 1 次或多次。
匹配 0 次或多次。
匹配 0 次或 1 次。
匹配其左侧的表达式恰好 p 次,不能少。
匹配其左侧的表达式 p 到 q 次。
匹配其左侧的表达式 p 次或更多。
匹配其左侧的表达式最多 q 次。Python
CODEBLOCK_bef320aa
Output
Explanation:
- 9+ 匹配连续的 9 -> 99
- \d{3} 恰好匹配三个数字 -> 123
字符类
字符类定义了一组字符,用于匹配字符串中来自该集合的任意单个字符。
说明
—
匹配字母数字字符,即 a-z、A-Z、0-9 和下划线()。
匹配非字母数字字符,即除了 a-z、A-Z、0-9 和 之外的字符。
匹配数字,从 0-9。
匹配任意非数字字符。
匹配空白字符,这也包括 \t、
、\r 和空格字符。 |
匹配非空白字符。
匹配字符串绝对开头的右侧表达式,无论是单行还是多行模式。
匹配字符串绝对结尾的左侧表达式,无论是单行还是多行模式。|
匹配制表符。
匹配单词开头或结尾的单词边界(或空字符串)。
匹配 \b 不匹配的位置,即非单词边界。Python
CODEBLOCK_7ad54bc5
Output
Explanation:
- \s 匹配第一个空格
- \D+\d* 匹配非数字字符后跟数字 -> geeks123
集合
集合用于匹配一组中的一个字符。
说明
—
匹配 a、b 或 c 中的任意一个。它不匹配 abc。
匹配从 a 到 z 的任意字母。
匹配从 A 到 Z 的任意大写字母。
匹配 a、- 或 p。它匹配 – 是因为 \ 转义了它。
匹配 – 或 z。
匹配从 a 到 z 或从 0 到 9 的字符。
特殊字符在集合内变为字面量,所以这匹配 (、+、 或 )。
添加 ^ 会排除集合中的任何字符。这里,它匹配不是 a、b 或 5 的字符。
匹配 [a],因为两个方括号 [ ] 都被转义了。Python
CODEBLOCK_fbc138d7
Output
Explanation:
- [^abc] 匹配 d
- [a-p] 匹配 e
分组
分组允许我们捕获匹配的一部分。
说明
—
匹配括号内的表达式并将其分组,我们可以根据需要捕获它。
读取注释。
匹配表达式 AB,可以使用组名进行检索。
匹配由 A 表示的表达式,但之后无法检索它。
匹配由名为“group”的较早组匹配的表达式。Python
CODEBLOCK_e7389181
Output
()
(‘geeks‘, ‘best‘)
Explanation:
- re.search(r"(?:AB)", "ACABC"): 使用非捕获组查找 AB,因此没有存储任何内容。