Python正则表达式CheatSheet
这里是正则表达式常用表示法与函数,以备查询。
符号
普通符号
表示法 | 描述 | 示例 |
---|---|---|
. | 匹配任意字符,\n除外 | b.b,表示以b开头以b结尾的任意字符串 |
\d | 匹配0-9的数字字符 | \d{3},表示3个数字 |
\w | 匹配任意字母数字下划线字符 | \w+,至少一个字母数字下划线组合 |
\s | 匹配任何空格,与[\n\t\r\v\f]相同 | \s\s+,至少2个空格 |
[…] | 匹配括号内字符集的任意单一字符 | [aeiou],匹配aeiou这5个字符中的一个 |
[x-y] | 匹配x~y之间任意字符 | [0-9],匹配0-9这10个数字,同\d |
\N | 匹配已保存的子组,N是子组的序号 | \2,表示已匹配的第2个子组 |
\c | c是一个特殊字符,匹配非转义的字符 | \, \* |
literal | 表示字面值 | 输入什么,就匹配什么 |
\D | 与\d相反,匹配非数字 | |
\W | 与\w相反,匹配非字母数字下划线 | |
\S | 与\s相反,匹配非空格 |
辅助符号
表示法 | 描述 | 示例 |
---|---|---|
* | 匹配0次或多次,默认贪婪 | |
+ | 匹配1次或多次,默认贪婪 | |
? | 匹配0次或1次,默认贪婪 | |
{N} | 匹配N次 | |
{M, N} | 匹配M~N次,默认贪婪 | |
? | 在上述符号后面,加上?,转为非贪婪 | |
| | 表示或,用在两个表达式之间 | |
^(或者\A) | 匹配字符串起始部分 | |
$(或者\Z) | 匹配字符串结束部分 | |
[^…] | 不匹配字符集内的字符 | |
\b | 表示在字符串边界,即开始或结尾 | \bthe,表示以the开头字符串;\bthe\b,表示the |
\B | 与\b相反,表示不在边界 | \Bthe,表示字符串不以the开头 |
扩展符号
表示法 | 描述 |
---|---|
?iLmsux | 加入特殊标记 |
(?:…) | 括号内的匹配不分组 |
(?=…) | 匹配…出现在之后的位置 |
(?!…) | 匹配…不出现在之后的位置 |
(?<=…) | 匹配…出现在之前的位置 |
(?<!…) | 匹配…不出现在之前的位置 |
(?(id/name)Y/N) | 如果id或name对应的分组存在,则返回Y,否则返回N |
(?P |
由name标识而不是数字id标识的分组匹配 |
(?P=name) | 在同一个字符串中匹配由(?P |
函数
常用函数
函数 | 描述 |
---|---|
match(pattern, string, flags=0) | 从字符串起始位置,匹配1次,起始必须匹配 |
search | 从字符串左侧开始,匹配1次,起始不必匹配 |
findall | 查找所有匹配,返回列表 |
finditer | 查找所有匹配,返回迭代器 |
split(pattern, string, max=0) | 返回根据pattern分割后字符串列表,默认分割max次 |
sub(pattern, repl, string, count=0) | 替换所有匹配pattern并返回新字符串,默认替换无数次 |
groups | 返回包括所有匹配子组的元组,若无匹配,则为空元组 |
group(num=0) | 返回指定序号的子组,若编号为0,则返回整个匹配 |
常用模块属性
模块属性 | 描述 |
---|---|
re.I, re.IGNORECASE | 不区分大小写 |
re.L, re.LOCALE | 根据使用的本地语言环境通过\w \W \b \B \s \S实现匹配 |
re.M, re.MULTILINE | ^ $ 分别匹配目标字符串每行的起始和结尾 |
re.S, re.DOTALL | .点号可以匹配\n |
re.X, re.VERBOSE | 允许忽略字符串中换行符和注释段落,增强可读性 |
函数调用示例
|
|