正则表达式
什么是正则表达式呢? 从名字上来看的话,就是通过正确的法则去匹配的表达式, 比较官方的定义就是,定义模式的字符串,其本质就是字符串,主要是用来匹配目标字符串,已找到匹配的字符串,并对其进行处理,如分割,替换等,正则表达式匹配语法
正则表达式一览表
re 正则模块
re.compile()函数
见名知意,compile 就是编译的意思:使用正则表达式之前,
需要将自定义的模式编译成为正则表达式对象(模式对象),
这个对象代表了模式中对应的正则表达式,匹配时,
可以调用其match()函数,search()函数
函数语法如下:
re.compile(pattern,flags=0)
参数说明:pattern是匹配的正则表达式,flags是标志位,控制匹配的方式
compile 函数中的flags取值
re.match()函数
re.match()函数尝试从字符串的起始位匹配一个模式,匹配成功,re.match()函数返回一个匹配对象,是否返回None;
函数语法:
re.match(pattern,string,flags=0)
参数说明:
pattern是匹配正则表达式,String是进行匹配的目标字符串,flags是标志位,控制正则表达式,如是否区分大小写,多行匹配
re.search()函数
re.search()函数是扫描整个字符串并返回第一个成功的匹配,匹配成功,返回一个匹配的对象,否则返回None。
语法:
re.search(pattern,string,flags)
参数含义同re.match()函数一样,
re.findall()函数
re.findall()函数返回总是正则表达式在字符串中所有匹配结果的列表函数语法:re.findall(pattern,string[,flags])参数说明与re.match()函数
re.sub()函数
re.sub()函数用于替换字符串中的匹配项语法函数:re.sub(pattern,repl,string,count=0,flags=0)参数说明:pattern是正则表达式中替换的模式表达式字符串,repl是替换的字符串,也可以为一个函数,string是一个要被查找替换的原始字符串,count是匹配后替换的次数,默认为0,表示替换为所有匹配
说了上面这么多,是不是很罗嗦呢?并不是罗嗦哦,其实上面就是一些API的说明,接下来,我们就来看看实际例子吧,小伙伴们期待吧?
电子邮箱格式的匹配
任务描述:编写一个Python程序 检查电子邮箱的格式是否正确
设计思路:用户输入邮箱,构造邮箱的匹配正则表达式,调用re.match()函数进行匹配,并输入提示
import rep = re.compile(r'^[\w\d]+[\d\w\_\.]+@([\d\w]+)\.([\d\w]+)(?:\.[\d\w]+)?$|^(?:\+86)?(\d{3})\d{8}$|^(?:\+86)?(0\d{2,3})\d{7,8}$')email = input("请输入正确的邮箱:")m = p.match(email)print(m.group())
电话号码的验证
import re
address = "李明 13530315051 liming@126.com\
刘东 13791072536 liudong@163.com\
张旭 18667676767 zhangxu@sina.com\"
p1 = re.compile(r'\d+')
phone = p1.findall(address)
print(phone)
p2 = re.compile("^0\d{2,3}\d{7,8}$|^1[358]\d{9}$|^147\d{8}")
for e in phone
m = p2.match(e)
if m:
print(p2.match().group())