# 匹配QQ号码,5~12位,不能是0开头import re
lis =['012345@qq.com','1234@qq.com','11234@qq.com','123452@qq.com','123456@qq.com','23564827@qq.com',]for li in lis:
m = re.match('[1-9][0-9]{4,11}', li)if m:print(m.group())else:print(li,"错误的QQ号码")
精确匹配与泛匹配
泛匹配时匹配所有的东西
精确匹配是匹配括号里的东西
import re
str='python 1234 slkjfgi 4567, hello'
pattern ='python.*hello'
res = re.findall(pattern,str)print(res)# ['python 1234 slkjfgi 4567, hello']
pattern ='python.(\d+).*hello'
res = re.findall(pattern,str)print(res)# ['1234']
import re
str='python 1234 slkjfgi 4567, hello'
pattern ='python.(\d+?).*hello'
res = re.findall(pattern,str)print(res)# 1 符合条件就停止匹配
pattern ='python.(\d+).*hello'
res = re.findall(pattern,str)print(res)# 1234 在符合条件下尽可能匹配更多
开始和结束语法
字符
含义
^
以…开头
$
以…结尾
import re
lis =['123456@163.com','98765@163.com','@abcd@163.com','1234@163.comhol']for li in lis:
m = re.match('\d*@163\.com', li)if m:print(li,"符合邮箱规定,匹配后是", m.group())else:print(li,'不符合邮箱规定')print("="*50)for li in lis:
m = re.match('^\d*@163\.com$', li)# 必须以数字开头,以 @163.com 结尾if m:print(li,"符合邮箱规定,匹配后是", m.group())else:print(li,'不符合邮箱规定')
import re
# split(pattern, string[, maxsplit, flags])# maxsplit:默认是0,表示全部切割,1代表切一次,2代表切两次# 切割去掉了匹配到的字符串import re
ret = re.split(r'\d+','ljllajl123$456$%++09',2)print(ret)