码迷,mamicode.com
首页 > 编程语言 > 详细

Python 正则表达式_re模块_使用compile加速

时间:2015-02-10 00:20:57      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

使用compile加速

compile( rule [,flag] )

  1. 将正则规则编译成一个Pattern对象,以供接下来使用。
  2. 第一个参数是规则式,第二个参数是规则选项。
  3. 返回一个Pattern对象
  4. 直接使用findall ( rule , target )的方式来匹配字符串,一次两次没什么,如果是多次使用的话,由于正则引擎每次都要把规则解释一遍,而规则的解释又是相当费时间的,所以这样的效率就很低了。如果要多次使用同一规则来进行匹配的话,可以使用re.compile函数来将规则预编译,使用编译过返回的Regular Expression Object或叫做Pattern对象来进行查找。
  5. 例
  6. >>> s=‘111,222,aaa,bbb,ccc333,444ddd‘
  7. >>> rule=r’\b\d+\b’
  8. >>> compiled_rule=re.compile(rule)
  9. >>> compiled_rule.findall(s)
  10. [‘111‘, ‘222‘]
  11. 可见使用compile过的规则使用和未编译的使用很相似。compile函数还可以指定一些规则标志,来指定一些特殊选项。多个选项之间用 ’|’(位或)连接起来。
  12. I      IGNORECASE 忽略大小写区别。
  13.  
  14. L   LOCAL  字符集本地化。这个功能是为了支持多语言版本的字符集使用环境的,比如在转义符\w,在英文环境下,它代表[a-zA-Z0-9],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配"é" 或 "ç"。加上这L选项和就可以匹配了。不过这个对于中文环境似乎没有什么用,它仍然不能匹配中文字符。
  15.  
  16. M    MULTILINE  多行匹配。在这个模式下’^’(代表字符串开头)和’$’(代表字符串结尾)将能够匹配多行的情况,成为行首和行尾标记。比如
  17. >>> s=’123 456\n789 012\n345 678’
  18. >>> rc=re.compile(r’^\d+’)    #匹配一个位于开头的数字,没有使用M选项
  19. >>> rc.findall(s)
  20. [‘123‘]             #结果只能找到位于第一个行首的’123’
  21. >>> rcm=re.compile(r’^\d+’,re.M)       #使用 M 选项
  22. >>> rcm.findall(s)
  23. [‘123‘, ‘789‘, ‘345‘]  #找到了三个行首的数字
  24. 同样,对于’$’来说,没有使用M选项,它将匹配最后一个行尾的数字,即’678’,加上以后,就能匹配三个行尾的数字456 012和678了.
  25. >>> rc=re.compile(r’\d+$’)
  26. >>> rcm=re.compile(r’\d+$’,re.M)
  27. >>> rc.findall(s)
  28. [‘678‘]
  29. >>> rcm.findall(s)
  30. [‘456‘, ‘012‘, ‘678‘]
  31.  
  32. S     DOTALL       ‘.’号将匹配所有的字符。缺省情况下’.’匹配除换行符’\n’外的所有字符,使用这一选项以后,’.’就能匹配包括’\n’的任何字符了。
  33.  
  34. U   UNICODE       \w, \W, \b, \B, \d, \D, \s 和 \S都将使用Unicode。
  35.  
  36. X     VERBOSE     这个选项忽略规则表达式中的空白,并允许使用’#’来引导一个注释。这样可以让你把规则写得更美观些。比如你可以把规则
  1. >>> rc = re.compile(r"\d+|[a-zA-Z]+")       #匹配一个数字或者单词
  1. 使用X选项写成:
  1. >>> rc = re.compile(r"""  # start a rule
  1. \d+                   # number
  1. | [a-zA-Z]+           # word
  1. """, re.VERBOSE)
  1. 在这个模式下,如果你想匹配一个空格,你必须用‘\ ‘的形式(‘\‘后面跟一个空格)

Python 正则表达式_re模块_使用compile加速

标签:

原文地址:http://www.cnblogs.com/wspblog/p/4282698.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!