re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
# pattern:匹配的正则表达式
# string:要匹配的字符串
# flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
| 匹配对象方法 | 描述 |
|---|---|
| group(num=0) | 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组 |
| groups() | 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号 |
| span() | 返回匹配值的下标 |
| start() | 返回开始位置 |
| end() | 返回结束位置 |
| 符号 | 描述 |
|---|---|
| . | 匹配任意一个字符(除了\n) |
| [] | 匹配列表中的字符 |
| \w | 匹配字母、数字、下划线,即a-z,A-Z,0-9,_ |
| \W | 匹配不是字母、数字、下划线 |
| \s | 匹配空白字符,即空格(\n,\t) |
| \S | 匹配不是空白的字符 |
| \d | 匹配数字,即0-9 |
| \D | 匹配非数字的字符 |
| * | 匹配零次或多次 |
| + | 匹配一次或多次 |
| ? | 匹配零次或一次 |
| {m} | 重复m次 |
| {m,n} | 重复m到n次 |
| {m,} | 至少m次 |
| {,m} | 至多m次 |
| \ | 转义字符 |
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
| \b | 匹配一个单词的边界 |
| \B | 匹配非单词的边界 |
| | | 搜索多个字符串 |
| () | 将括号中的字符作为一个分组 |
| \num | 引用分组num匹配到的字符串,从1开始计数 |
| (?p) | 分别起组名 |
| (?p=name) | 引用别名为name分组匹配到的字符串 |
re.search扫描整个字符串并返回第一个成功的匹配。
函数语法:
re.search(pattern, string, flags=0)
# pattern:匹配的正则表达式
# string:要匹配的字符串
# flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
而re.search匹配整个字符串,直到找到一个匹配。
re.sub用于替换字符串中的匹配项。
函数语法:
re.sub(pattern, repl, string, count=0, flags=0)
# pattern:正则中的模式字符串
# repl:替换的字符串,也可为一个函数
# string:要被查找替换的原始字符串
# count:模式匹配后替换的最大次数,默认 0 表示替换所有的匹配
subn函数与sub函数功能几乎完全一样,sub函数返回替换后的结果,subn函数返回一个元组,元组的第1个元素是替换后的结果,第2个元素是替换的总数。
用于编译正则表达式,生成一个正则表达式(Pattern)对象,供match()和search()这两个函数使用。
re.compile(pattern[, flags])
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。
注意:match和search是匹配一次findall匹配所有。
函数语法:
findall(string[, pos[, endpos]])
参数:
split函数用于根据正则表达式分隔字符串。
函数语法:
re.split(pattern, string[, maxsplit=0, flags=0])
# pattern:匹配的正则表达式
# string:要匹配的字符串
# maxsplit:分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数
# flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等