使用compile加速

compile( rule [,flag] )

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

转载于:https://www.cnblogs.com/wspblog/p/4282698.html

Python 正则表达式_re模块_使用compile加速相关推荐

  1. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

  2. python 正则表达式re 模块的使用

    python 正则表达式re 模块的使用 文章目录: 一.re模块介绍 1.re模块说明 2.官方文档给出的文档 3.别人总结的成表格中的内容 二.re模块使用介绍 1.常用函数源码 1.常用的函数介 ...

  3. Python 正则表达式re模块的使用

    Python 正则表达式re模块的使用 基本上所有的编程语言都会有正则表达式,正则表达式是用来匹配一段字符串的表达式. 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用内置模块re. ...

  4. python中re模块的span,详解Python正则表达式re模块

    正则是处理字符串最常用的方法,我们编码中到处可见正则的身影. 正则大同小异,python 中的正则跟其他语言相比略有差异: 1.替换字符串时,替换的字符串可以是一个函数 2.split 函数可以指定分 ...

  5. python正则表达式re模块之findall函数

    python正则表达式re模块之findall函数 1. re.findall函数介绍 2. findall函数捕获分组 3. re.findall中正则表达式(.*?) 4. re.findall中 ...

  6. python:正则表达式_re模块

    Python 正则表达式 简介 1.正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.从而达到快速检索或替换符合某个模式.规则的文本. 2.Python自1.5版本起增 ...

  7. Python正则表达式re模块简明笔记

    简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 'hello' 可以匹配字符串 'hello'. ...

  8. python正则表达式——re模块

    参考:python文档re --- 正则表达式操作 - Python 3.10.0 文档 目录 1.整体了解 2. 语法 3. re.match 4. re.search re.match与re.se ...

  9. python正则表达式使用实例_正则表达式的基础知识,以及Python爬虫中的使用方法...

    一.正则表达式 实际上爬虫一共就四个主要步骤: 明确目标(要知道你准备在哪个范围或者网站去搜索) 爬(将所有的网站内容全部爬下来) 取(去掉对我们没有用处的数据) 处理数据 我们在第上一篇文章中介绍的 ...

  10. python findall函数_Ramp;Python Data Science系列:数据处理(11)Python正则表达式re模块(三)...

    前言 使用正则表达式进行匹配,可以直接调用模块级函数,如match().search().findall()等,函数第一个参数是匹配的正则表达式,第二个参数则为要匹配的字符串.也可以使用re.comp ...

最新文章

  1. eclipse常用插件介绍
  2. 物体计数--Learning To Count Objects in Images
  3. Android首次启动时间长优化之预编译提取Odex
  4. kubernetes集群命令行工具kubectl
  5. C++ Primer 学习笔记_75_模板与泛型编程 --模板定义
  6. cad在哪里设置图幅大小_一看就懂!菜鸟也能快速入门CAD,关键掌握这4个诀窍...
  7. 产品原型示例_原型设计模式示例
  8. 异构计算:软硬件结合全栈助力AI大爆发
  9. jQuery实现列表数据从右至左滚动(类似弹幕)
  10. atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性
  11. 计算机四级网络工程师(计算机网络单选)- 知识点
  12. LMS Virtual.Lab二次开发:场点网格编辑(VBScript)
  13. java hl7_java-发送HL7消息后何时关闭并重新打开套接...
  14. 机器学习(一)模型三要素
  15. 能力清单:透视成功逻辑,学会清单练习
  16. L05 Laravel 教程 - 电商实战
  17. C语言前驱后驱字母表示,汽车中的前置后驱(FR)、前置前驱(FF)、后置后驱(RR)、中置后驱(MR)、4轮驱动(4WD),分别为什么概念?...
  18. JS之setInterval方法
  19. 推荐6款非常实用的工具,你用过几款呢?
  20. 页面添加漂浮物 掉礼物效果 掉红包效果

热门文章

  1. android仿qq编辑图片,仿QQ图片编辑器 – ImageEditor
  2. PLC控制系统设计的基本原则和步骤
  3. 如何刷新DNS缓存(Windows,Mac,Chrome)
  4. 介绍常用的无线通信技术
  5. Xiaojie雷达之路---匹配滤波器
  6. Android打造自定义通用popWindow
  7. adminlte java_AdminLTE的使用
  8. Chrome 插件PPAPI 开发(一)环境搭建
  9. 施努卡:什么是视觉定位系统 视觉系统如何定位
  10. PIC18单片机移植FreeModbus