目录
一、定义
正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。
简单来说,正则表达式就是使用:字符串定义规则,并通过规则去验证字符串是否匹配比如,验证一个字符串是否是符合条件的电子邮箱地址,只需要配置好正则规则即可。
比如通过正则规则:(^[\w-]+(L.[\w-]+)*@[ \w-]+(1.[\w-]+)+$)即可匹配一个字符串是否是标准邮箱格式
但如果不使用正则,使用if else来对字符串做判断就非常困难了。 但如果不使用正则,使用,如果不是来对字符串做判断就非常困难了。
Python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配。分别是: match、search、findall三个基础方法 Python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配。分别是:Match、Search、findall三个基础方法.
1.re.match(匹配规则,被匹配字符串)
从被匹配字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空.
import re
s = 'python itheima python itheima python itheima'
result = re.Match('python',s)
print(result) # <re.Match object; span=(0,6), match='python'>
print(result.span()) #(0,6)
print(result.group()) #python
s = '1python itheima python itheima python itheima'
result=re.match('python',s)
print(result) #结果为None,因为上面一条语句的意思是如果开头都不匹配,就不会再往下了
2.. search(匹配规则,被匹配字符串)
搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后
import re
s = '1python itheima python itheima python itheima'
result = re.search('python',s)
print(result)
print(result.span())
print(result.group())
整个字符串都找不到,返回None
import re
s = '163itheima'
result = re.search('python',s)
print(result)
3.findall(匹配规则,被匹配字符串)
匹配整个字符串,找出全部匹配项
import re
s = '163itheima python3 python'
result = re.findall('python',s)
print(result)
找不到返回空list: []
import re
s = '163itheima python3 python'
result = re.findall('pythons',s)
print(result)
二、元字符匹配
在刚刚我们只是进行了基础的字符串匹配,正则最强大的功能在于元字符匹配规则。
单字符匹配:
案例:
#匹配账号,只能由字母和数字组成,长度限制6到10位
import re
r='^[0-9a-zA-Z]{6,10}$'
s='1234567'
print(re.findall(r,s))
#这里需要知道s中长度超于10个或者小于6个,含有不是限制中的字符,得到的结果都是[]
#匹配QQ号.要求纯数字,长度5-11,第一位不为0
import re
r='^[1-9][0-9]{4,10}$'#第一位已经存在了[1-9],所以{4,10}
s='1234566'
print(re.findall(r,s))
#匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
#{内容}.{内容}.{内容}.{内容}.{内容}.{内容}.{内容}@.{内容}.{内容}.
import re
r=r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'#整体加括号是因为finall会输出括号的内容
#s='a.bc.d.e.f.g@qq.com.a.z.c.s.d'
s='a.b.c.d@qq.com.a.z.x'
print(re.findall(r,s))