时间:2014.01.12
地点:软件大楼
————————————————————————————————————
Python中通过re模块支持强大的正则表达式,以完成对复杂字符串的操作关于正则表达式的基础知识见:
———————————————————————————————————— 。
re.match() ——用于正则表达式的字符串匹配,匹配成功返回MatchObject对象实例。
re.search()——用于正则表达式的字符串查找,如果找到返回MatchObject对象实例。
以上二者作用基本一样,只是re.match()从字符串中第一个字符开始匹配,而re.search()则搜索整个字符串。
re.findall()——用于在字符串中查找所以符合正则表达式的字符串,并返回这些字符串的列表。若表达式中使用了组,则返回一个元组。
import re
s='you are the best'
print re.match('are',s) #从字符串中第一个字符开始匹配,匹配失败,返回None
print re.search('are',s) #在整个字符串中搜索匹配,可以匹配成功,返回匹配对象实例
print re.match('Y.*',s) #s中第一个字符为y,匹配不成,返回None
print re.match('y.*',s) #首字符匹配成功,返回匹配对象实例
print re.match('Y.*',s,re.I) #参数re.I,标志位,表示忽略大小写进行匹配
re.findall('[a-z]{3}',s) #找出所有三个连字母的子字串,返回一个列表:['you', 'are', 'the', 'bes']
re.findall('[a-z]{1,3}',s)#找出所有1至3个连字母的子字串,返列表:['you', 'are', 'the', 'bes', 't']
三种匹配过程中标志设置是可有可无的,常用有如下选择
re.I ——忽略大小写 re.S ——使用 .(点号)元字符匹配换行符
re.U ——匹配Unicode字符 re.X ——忽略pattern匹配模式中的空格
还有几个我自己觉得不怎么常用就不说了,这几个标志可以同时使用,使用 | 对标志进行运算
————————————————————————————————————
re.sub() 用于替换字符串中符合正则表达式的内容,返回替换后的字符串。
re.subn() 返回替换后的一个元组
import re
s='you are the best'
print re.sub('are','new',s) #用 new 替换字符串s中的are ——you new the best
print re.sub('are|the','new',s) #用 new 替换字符串s中的are或者the ——you new new best
print re.sub('are|the','new',s,1) #用 new 替换字符串s中的are或者the,且只操作一次 ——you new the best
print re.subn('are|the','new',s,1) #同上,但返回一个包含替换次数的元组——('you new the best', 1)
print re.subn('are|the','new',s) #返回 ('you new new best', 2)
r= re.subn('are|the','new',s)
print r[0]
print r[1]