3.2.2 正则表达式的功能(1)
re.search(pattern,string,flags=0) 从一个字符串string任何位置开始匹配正则表达式的字符串pattern,匹配成功返回match对象,如果不成功返回None。flags是上面介绍的相关标志。 例子: print('re.search') result=re.search('mycard+','testmycar007nmycar008n') ifresult: print(result) 结果输出如下: re.search <_sre.SRE_Matchobject;span=(4,12),match='mycar007'> re.match(pattern,flags=0) 从字符串string开始位置对正则表达式pattern进行0个或多个字符进行匹配,如果匹配成功返回match对象。如果匹配不成功返回None。值得注意是,当多行标志re.MULTILINE起作用时,re.match()只匹配字符串最开始的字符,而不会匹配换行符开始的字符。如果你想搜索一个字符串任意位置开始的匹配,应使用re.search()。 例子: print('re.match') result=re.match('mycard+','mycar007nmycar008n') ifresult: print(result) result=re.match('tmycard+','mycar007nmycar008n') ifresult: print(result) 结果输出如下: re.match <_sre.SRE_Matchobject;span=(0,8),match='mycar007'> re.fullmatch(pattern,flags=0) 这个方法当整个字符串string与正则表达式匹配时返回match对象,否则返回None。此方法不存在部分匹配。 例子: print('re.fullmatch') result=re.fullmatch('mycar007','mycar007') ifresult: print(result) result=re.fullmatch('mycar007','mycar007') ifresult: print(result) 结果输出如下: re.fullmatch <_sre.SRE_Matchobject;span=(0,match='mycar007'> re.split(pattern,maxsplit=0,flags=0) 根据正则表达式来分割字符串string。如果采用分组模式的正则表达式,那么分隔符作为一组,返回在列表中。如果maxsplit为非零数值,那么把字符串最多分割为maxsplit个元素,剩余的全部组成一个元素。 例子: print('re.split') result=re.split('W+','Cai,cai,cai.') ifresult: print(result) result=re.split('(W+)',cai.') ifresult: print(result) result=re.split('W+',cai.',1) ifresult: print(result) result=re.split('W+',2) ifresult: print(result) 结果输出如下: re.split ['Cai','cai',''] ['Cai',','.','cai,cai.'] ['Cai','cai.'] re.findall(pattern,flags=0) 查找返回非重复匹配的字符串元素的列表。从左向右搜索字符串string,当有匹配成功时,就生成一个列表元素。 例子: print(r'(.+)1') m=re.findall(r'(.+)1',r'abcabcabcabc55565757') ifm: print(m) 结果输出如下: (.+)1 ['abc','5','57'] re.finditer(pattern,flags=0) 在字符串string里按正则表达式pattern来匹配,返回匹配成功的迭代子iterator对象。匹配过程是从字符串string从左向右匹配,当匹配成功之后,就返回相应的对象。当没有匹配成功字符串,就返回空对象。 例子: print('re.finditer') foriinre.finditer('abc','abc,abc1,abc2'): print(i) 结果输出如下: re.finditer <_sre.SRE_Matchobject;span=(0,3),match='abc'> <_sre.SRE_Matchobject;span=(5,match='abc'> <_sre.SRE_Matchobject;span=(11,14),match='abc'> re.sub(pattern,repl,count=0,flags=0) 在字符串string中根据正则表达式pattern匹配,如果匹配成功,就使用repl替换相应的字符串,匹配完成后返回替换后的字符串。count是表示替换最多替换多少个,0是不限。其中repl也可以替换函数,传入一个匹配对象的参数,返回替换的字符串。 例子: print('re.sub') result=re.sub('cai','replace',cai.') ifresult: print(result) defmyrepl(matchobj): ifmatchobj.group(0)=='cai':return'OK' else:return'#' result=re.sub('cai',myrepl,caicai,1) ifresult: print(result) re.sub Cai,replace,replace. Cai,OKcai,cai. re.subn(pattern,flags=0) 这个方法的功能与方法sub相同,只不过返回元组对象。元组使用这样的格式(新字符串,多少个替换)。 例子: print('re.subn') result=re.subn('cai',cai.') ifresult: print(result) 结果输出如下: re.subn ('Cai,replace.',2) re.escape(string) 本方法是把所有非ASCII字符、数字和下划线以外字符修改为转义方式,也就是添加反斜线在前面。 例子: print('re.escape') result=re.escape('cai') ifresult: print(result) result=re.escape('cai----_3721中国') ifresult: print(result) 结果输出如下: re.escape cai cai----_3721中国 re.purge() 清除正则表达式的内部缓存。 例子: print('re.purge()') result=re.compile('caid') print(result) re.purge() print(result) 结果输出如下: re.purge() re.compile('caid') re.compile('caid') 异常re.error 编译一个正则表达式不合法时,会抛出异常错误。 例子: print('re.error') try: result=re.compile('(caid') exceptre.erroraserror: print('re:',str(error)) 结果输出如下: re.error re:unbalancedparenthesis 蔡军生 QQ:9073204 深圳 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |