资源描述:
《Python正则表达式模块re讲解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2re模块的基本函数在上面的说明中,我们已经对re模块的基本函数 ‘findall’很熟悉了。当然如果光有findall的话,很多功能是不能实现的。下面开始介绍一下re模块其它的常用基本函数。灵活搭配使用这些函数,才能充分发挥Python正则式的强大功能。首先还是说下老熟人findall函数吧findall(rule,target[,flag])在目标字符串中查找符合规则的字符串。第一个参数是规则,第二个参数是目标字符串,后面还可以跟一个规则选项(选项功能将在compile函数的说明中详细说明)。返回结果结果是一个列表,中间存放的是符合规则的字符串。如果没有符合规则的字符
2、串被找到,就返回一个空列表。2.1 使用compile加速compile(rule[,flag])将正则规则编译成一个Pattern对象,以供接下来使用。第一个参数是规则式,第二个参数是规则选项。返回一个Pattern对象直接使用findall(rule,target)的方式来匹配字符串,一次两次没什么,如果是多次使用的话,由于正则引擎每次都要把规则解释一遍,而规则的解释又是相当费时间的,所以这样的效率就很低了。如果要多次使用同一规则来进行匹配的话,可以使用re.compile函数来将规则预编译,使用编译过返回的RegularExpressionObject或叫做Patt
3、ern对象来进行查找。>>>s='111,222,aaa,bbb,ccc333,444ddd'>>>rule=r’bd+b’>>>compiled_rule=re.compile(rule)>>>compiled_rule.findall(s)['111','222']可见使用compile过的规则使用和未编译的使用很相似。compile函数还可以指定一些规则标志,来指定一些特殊选项。多个选项之间用 ’
4、’(位或)连接起来。I IGNORECASE 忽略大小写区别。 L LOCAL 字符集本地化。这个功能是为了支持多语言版本的字符集使用环境的,比如在
5、转义符w,在英文环境下,它代表[a-zA-Z0-9],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配"é" 或 "ç"。加上这L选项和就可以匹配了。不过这个对于中文环境似乎没有什么用,它仍然不能匹配中文字符。 M MULTILINE 多行匹配。在这个模式下’^’(代表字符串开头)和’$’(代表字符串结尾)将能够匹配多行的情况,成为行首和行尾标记。比如>>>s=’123456789012345 678’>>>rc=re.compile(r’^d+’) #匹配一个位于开头的数字,没有使用M选项>>>rc.findall(s)['
6、123'] #结果只能找到位于第一个行首的’123’>>>rcm=re.compile(r’^d+’,re.M) #使用 M 选项>>>rcm.findall(s)['123','789','345'] #找到了三个行首的数字第7页共7页同样,对于’$’来说,没有使用M选项,它将匹配最后一个行尾的数字,即’678’,加上以后,就能匹配三个行尾的数字456012和678了.>>>rc=re.compile(r’d+$’)>>>rcm=re.compile(r’d+$’,re.M)>>>rc.findall(s)['678']>>>
7、rcm.findall(s)['456','012','678'] S DOTALL ‘.’号将匹配所有的字符。缺省情况下’.’匹配除换行符’’外的所有字符,使用这一选项以后,’.’就能匹配包括’’的任何字符了。 U UNICODE w, W, b, B, d, D, s 和 S都将使用Unicode。 X VERBOSE 这个选项忽略规则表达式中的空白,并允许使用’#’来引导一个注释。这样可以让你把规则写得更美观些。比如你可以把规则>>>rc=re.compile(r"d+
8、[a-zA-Z]+
9、") #匹配一个数字或者单词使用X选项写成:>>>rc=re.compile(r""" #startaruled+ #number
10、[a-zA-Z]+ #word""",re.VERBOSE)在这个模式下,如果你想匹配一个空格,你必须用''的形式(''后面跟一个空格) 2.2match与searchmatch(rule,targetString[,flag])search(rule,targetString[,flag])(注:re的match 与search函数