常用方法:

re.match(参数一,参数二)

参数一:匹配规则;参二:要匹配的字符串

.span()

常用re.match().span()   返回对应的索引值

.group()

常用re.match().group()  返回匹配后的字符

re.search(参一,参二)

参一:要匹配的对象;参二:字符串

re.findall(参一,参二)

参一:要获得的字符:参二:字符串

“匹配三子”的比较:

re.match(参数一,参数二)只能从参数二的开头匹配,返回的是对象,匹配不到返回None

re.search(参一,参二) 默认从左到右开始匹配,返回的是对象,只要找到一个就不在继续

re.findall(参一,参二)  找出所有符合规则的字符,默认从左到右,返回的是列表

示例:

import re
b = '张三天在玩4399小游戏,张三 hello 玩的.很开心'
ress1 = re.match("张三",b)
ress2 = re.search("张三",b)
ress3 = re.findall(r'张三',b)
print(ress1)
print(ress2)
print(ress3)

输出:

<re.Match object; span=(0, 2), match='张三'>
<re.Match object; span=(0, 2), match='张三'>
['张三', '张三']

常用单字符(元字符)如下

.

匹配任意一个字符(除\n)

[]

匹配[]中列举的字符

\d

匹配数字,即0-9

\D

匹配非数字

\s

匹配空白,即 空格,tab键

\S

匹配非空白

\w

匹配单字符,即数字、字母、下划线

\W

匹配非单字符

[]字符规则:

1.对于[]中的字符会从左到右逐一匹配

import re
b = '张三天在玩4399小游戏,张三 hello 玩的.很开心'
ress1 = re.findall(r'[54]',b)
ress2 = re.findall(r'[543]',b)
print(ress1)
print(ress2)
['4']
['4', '3']

 2.范围,对于[1-9]就相当于\d+

import re
b = '张三天在玩4399小游戏,张三 hello 玩的.很开心'
ress1 = re.findall(r'[1-9]',b)
ress3 = re.search(r'[1-9]',b)
print(ress1)
print(ress3)

 输出:

['4', '3', '9', '9']
<re.Match object; span=(5, 6), match='4'>

代表数量的元字符:

*

匹配前一个字符出现0次或者无限次,即可有可无

+

匹配前一个字符出现1次或者无限次,即至少有1次


匹配前一个字符出现0次或者1次,即要么有1次,要么没有

{m}

匹配前一个字符出现m次

{m,}

匹配前一个字符至少出现m次

{m,n}

匹配前一个字符出现从m到n次

注:元字符 ?用于改变贪婪模式

分组匹配:

|

匹配左右任意一个表达式

()

将括号中的字符作为一个分组

那么当使用|时如果左右两端都使用了(),那该如何获取元组内的字符呢,如下 

m1 = re.match(".+\"(\w+://\w+\.\d{4}\w+\.com?)\".+>(\w+?)<.+|.+\"(\w+://\w+\.\w+\.\w+\.cn?)\".+>(\w+?)<.+", str1)

 获取所有元组内的字符,可以这样写:

m1.group(1,2,3, 4)

尽管|表示一定的or意思,但在分组操作时很特殊,不管有没有|,是第几个元组就用其相应的数字索引即可