语法 | 说明 | 表达式实例 | 完整匹配的字符串 |
一般字符 | 匹配自身 | abc | abc |
. | 匹配任意字符( 除外) | ab. | abc |
[...] | 字符集(对应位子可以是字符集中的任意字符) | a[bcd]e | abe ace ade |
预定义字符集(可以写在字符集[...]中) | |||
d | 数字:[0-9] | adc | a1c |
D | 非数字[^d] | aDc | abc |
s | 空白字符:[<空格> fv] | asc | a c |
S | 非空白字符:[^s] | aSc | abc |
w | 单词字符:[A-Za-z0-9_] | awc | abc |
W | 非单词字符:[^w] | aWc | a c |
数量词(用在字符或(...)之后) | |||
* | 匹配前一个字符0次或无限次 | abc* | ab abccc |
+ | 匹配前一个字符1次或无限次 | abc+ | abc abccc |
? | 匹配前一个字符0次或1次 | abc? | ab abc |
{m} | 匹配前一个字符m次 | ab{2}c | abbc |
{m,n} | 匹配前一个字符m至n次 | ab{1,2}c | abc abbc |
*? +? ?? {m,n}? | 使* + {m,n}变成非贪婪模式 | ||
边界匹配 | |||
^ | 匹配字符串开头 在多行模式中匹配每一行开头 | ^abc | abc |
$ | 匹配字符串末尾 多行模式中每一行末尾 | $abc | abc |
逻辑和分组 | |||
| | 左右任意匹配一个 | abc|def | abc def |
(...) | 分组 | (abc){2} a(123|456)c | abcabc a123c a456c |
(?P<name>...) | 分组,原有编号指定别名 | (?P<id>abc){2} | abcabc |
(?p=name) | 引用别名为<name>分组的字符串 | (?P<id>d)abc(?P=id) | 1abc1 |
正则匹配模式表
标志 |
含义 |
re.S(DOTALL) |
使.匹配包括换行在内的所有字符 |
re.I(IGNORECASE) |
使匹配对大小写不敏感 |
re.L(LOCALE) |
做本地化识别(locale-aware)匹配,法语等 |
re.M(MULTILINE) |
多行匹配,影响^和$ |
re.X(VERBOSE) |
该标志通过给予更灵活的格式以便将正则表达式写得更易于理解 |
re.U |
根据Unicode字符集解析字符,这个标志影响w,W,,B |
执行匹配
方法/属性 | 作用 |
match() | 字符串开始位置匹配,成功返回MatchObject,失败返回None |
search() | 扫描字符串,找到RE匹配的位置,成功返回MatchObject,失败返回None |
findall() | 找到RE匹配的所有子串,作为一个列表返回 |
finditer() | 找到RE匹配的所有子串,作为一个迭代器返回 |
方法/属性 | 作用 |
group() | 返回被RE匹配的字符串 |
start() | 返回匹配开始的位置 |
end() | 返回匹配结束的位置 |
span() | 返回一个元祖包含匹配(开始,结束)的位置 |
参数 | 描述 |
patten | 正则表达式 |
string | 被搜索匹配的字符串,字符串开始 |
flags | 正则表达式修饰符 |
匹配对象的方法 | 描述 |
group(num=0) |
返回整个匹配(指定分组) |
groups() | 以元祖形式返回匹配子组 |
参数 | 描述 |
patten | 正则表达式 |
string | 被搜索匹配的字符串,字符串开始 |
flags | 正则表达式修饰符 |
匹配对象的方法 | 描述 |
group(num=0) |
返回整个匹配(指定分组) |
groups() | 以元祖形式返回匹配子组 |