文档详情

Python正则表达式模块re讲解.doc

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