re.search函数
原型:search(pattern,string,flags=0)参数:pattern:匹配的正则表达式,string:要匹配的字符串,flags:标志位,用于控制正则表达式的匹配方式
功能:扫描整个字符串,并返回第一个成功的匹配Match对象
import re print(re.search("sunck","good man is sunCk.sunck is nice.")) #<re.Match object; span=(18, 23), match='sunck'>
re.match函数
原型:match(pattern,string,flags=0)参数:pattern:匹配的正则表达式,string:要匹配的字符串,flags:标志位,用于控制正则表达式的匹配模式功能:尝试从字符串的起始位置匹配,成功返回Match对象.如果不是起始位置匹配成功,还是返回None,有一定局限性
import re print(re.match("www","www.baidu.com")) #<re.Match object; span=(0, 3), match='www'>re.findall函数
原型:findall(pattern,string,flags=0)参数:pattern:匹配的正则表达式,string:要匹配的字符串,flags:标志位,用于控制正则表达式的匹配方式
功能:扫描整个字符串,并返回匹配的结果的列表
print(re.findall("sunck","good man is sunck!sunck is good man.")) #['sunck', 'sunck']re.finditer函数
原型:finditer(pattern,string,flags=0)参数:pattern:匹配的正则表达式,string:要匹配的字符串,flags:标志位,用于控制正则表达式的匹配方式
功能:与findall类似,扫描整个字符串,并返回一个迭代器
str2="sunck is a good man!sunck is a nice man!sunck is a handsome man!" res=re.finditer(r"sunck",str2) #这里字符串前r表示不转义,使用真实字符 while True: #防止迭代器为空时的报错 try: n=next(res) print(n) except: break #<re.Match object; span=(0, 5), match='sunck'> #<re.Match object; span=(20, 25), match='sunck'> #<re.Match object; span=(40, 45), match='sunck'>
re.sub()与re.subn()函数
字符串的替换和修改sub(pattern,repl,string,count=0)subn(pattern,repl,string,count=0)pattern:正则表达式(规则)repl:指定的用来替换的字符串string:目标字符串count:最多替换次数功能:在目标字符串中以正则表达式的规则匹配字符串,再把它们替换成指定的字符串。可以指定替换的次数。0为默认替换所有。sub与subn区别:前者返回第一个被替换的字符串,后者返回一个元组,元组中第一个元素为替换的字符串,第二个元素表示被替换的次数。
str3 = r'https://www.baidu.com/s?word=ts&tn=78000241_11_hao_pg' res = re.sub('/s.*','',str3) print(res) #https://www.baidu.comre.split(pattern,string)字符串切割用re进行字符串切割比原生的字符串方法split()可更灵活定义切割的规则 str4 = "sunck is a good man" print(str4.split(" ")) print(re.split(r" +",str4)) #['sunck', '', '', '', '', 'is', '', 'a', 'good', '', 'man'] #['sunck', 'is', 'a', 'good', 'man']
re.compile函数
用以编译:re.compile(pattern,flags=0)pattern:要编译的正则表达式
re_telephon = re.compile(r"\d{11}") print(re_telephon.findall('188888888888888')) #['18888888888']
re.I 忽略大小写re.L 做本地化识别re.M 多行匹配,影响^(匹配行首)和$(匹配行尾)re.S 使.点匹配包括换行符在内的所有字符re.U 根据Unicode字符集解析字符,影响\w,\W,\b,\Bre.X 使我们以更灵活的格式理解正则表达式
说明:下方的x,y,z均为假设的普通字符,不是正则表达式的元字符(xyz) 匹配小括号内的xyz(作为一个整体去匹配)
x? 匹配0个或1个x x* 匹配0个或任意多个字符(换行符除外) x+ 匹配最少一个x x{n} 匹配确定的n个x x{n,} 匹配最少n个x x{n,m} 匹配最少n个最多m个x.注意:n<=m x|y |表示或,匹配的是x或yprint(re.findall(r"(sunck)","suncks is a good man,is nice man sunck ")) #['sunck', 'sunck'] print(re.findall(r"a?","aaa")) #['a', 'a', 'a', ''] print(re.findall(r"a*","aaabaaaa")) #['aaa', '', 'aaaa', ''] print(re.findall(r"a+","aaaabaaaaaaaa")) #['aaaa', 'aaaaaaaa'] print(re.findall(r"a{3}","aaabaa")) #['aaa'] print(re.findall(r"a{3,}","aaaaaaabaa")) #['aaaaaaa'] print(re.findall(r"(s|Sunck)",'sunck--Sunck')) #['s', 'Sunck']
转载于:https://www.cnblogs.com/byadmin/articles/foundation-8.html
相关资源:数据结构—成绩单生成器