在上面的说明中,我们已经对re模块的基本函数 ‘findall’很熟悉了。当然如果光有findall的话,很多功能是不能实现的。下面开始介绍一下re模块其它的常用基本函数。灵活搭配使用这些函数,才能充分发挥Python正则式的强大功能。首先还是说下老熟人findall函数吧findall(rule,target[,flag])在目标字符串中查找符合规则的字符串。第一个参数是规则,第二个参数是目标字符串,后面还可以跟一个规则选项(pile函数的说明中详细说明)。返回结果结果是一个列表,中间存放的是符合规则的字符串。如果没有符合规则的字符串被找到,就返回一个空列表。 pile(rule[,flag])将正则规则编译成一个Pattern对象,以供接下来使用。第一个参数是规则式,第二个参数是规则选项。返回一个Pattern对象直接使用findall(rule,target)的方式来匹配字符串,一次两次没什么,如果是多次使用的话,由于正则引擎每次都要把规则解释一遍,而规则的解释又是相当费时间的,所以这样的效率就很低了。如果要多次使用同一规则来进行匹配的话,pile函数来将规则预编译,使用编译过返回的RegularExpressionObject或叫做Pattern对象来进行查找。>>>s='111,222,aaa,c333,444ddd'>>>rule=r’\b\d+\b’>>>compiled_rule=pile(rule)>>>(s)['111','222']pile函数还可以指定一些规则标志,来指定一些特殊选项。多个选项之间用 ’|’(位或)连接起来。I IGNORECASE 忽略大小写区别。 L LOCAL 字符集本地化。这个功能是为了支持多语言版本的字符集使用环境的,比如在转义符\w,在英文环境下,它代表[a-zA-Z0-9],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配"é" 或 "ç"。加上这L选项和就可以匹配了。不过这个对于中文环境似乎没有什么用,它仍然不能匹配中文字符。 M MULTILINE 多行匹配。在这个模式下’^’(代表字符串开头)和’$’(代表字符串结尾)将能够匹配多行的情况,成为行首和行尾标记。比如>>>s=’123456\n789012\n345 678’>>>rc=pile(r’^\d+’) #匹配一个位于开头的数字,没有使用M选项>>>(s)['123'] #结果只能找到位于第一个行首的’123’>>>rcm=pile(r’^\d+’,) #使用 M 选项>>>(s)['123','789','345'] #找到了三个行首的数字同样,对于’$’来说,没有使用M选项,它将匹配最后一个行尾的数字,即’678’,加上以后,就能匹配三个行尾的数字456012和678了.>>>rc=pile(r’\d+$’)>>>rcm=pile(r’\d+$’,)>>>(s)['678']>>>(s)['456','012','678'] S DOTALL ‘.’号将匹配所有的字符。缺省情况下
Python正则表达式模块re讲解 来自淘豆网www.taodocs.com转载请标明出处.