Python 正则表达式_re模块_使用compile加速
使用compile加速
compile( rule [,flag] )
- 将正则规则编译成一个Pattern对象,以供接下来使用。
- 第一个参数是规则式,第二个参数是规则选项。
- 返回一个Pattern对象
- 直接使用findall ( rule , target )的方式来匹配字符串,一次两次没什么,如果是多次使用的话,由于正则引擎每次都要把规则解释一遍,而规则的解释又是相当费时间的,所以这样的效率就很低了。如果要多次使用同一规则来进行匹配的话,可以使用re.compile函数来将规则预编译,使用编译过返回的Regular Expression Object或叫做Pattern对象来进行查找。
- 例
- >>> s='111,222,aaa,bbb,ccc333,444ddd'
- >>> rule=r’\b\d+\b’
- >>> compiled_rule=re.compile(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=re.compile(r’^\d+’) #匹配一个位于开头的数字,没有使用M选项
- >>> rc.findall(s)
- ['123'] #结果只能找到位于第一个行首的’123’
- >>> rcm=re.compile(r’^\d+’,re.M) #使用 M 选项
- >>> rcm.findall(s)
- ['123', '789', '345'] #找到了三个行首的数字
- 同样,对于’$’来说,没有使用M选项,它将匹配最后一个行尾的数字,即’678’,加上以后,就能匹配三个行尾的数字456 012和678了.
- >>> rc=re.compile(r’\d+$’)
- >>> rcm=re.compile(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 = re.compile(r"\d+|[a-zA-Z]+") #匹配一个数字或者单词
- 使用X选项写成:
- >>> rc = re.compile(r""" # start a rule
- \d+ # number
- | [a-zA-Z]+ # word
- """, re.VERBOSE)
- 在这个模式下,如果你想匹配一个空格,你必须用'\ '的形式('\'后面跟一个空格)
Python 正则表达式_re模块_使用compile加速的更多相关文章
- python正则表达式Re模块备忘录
title: python正则表达式Re模块备忘录 date: 2019/1/31 18:17:08 toc: true --- python正则表达式Re模块备忘录 备忘录 python中的数量词为 ...
- Python面试题之Python正则表达式re模块
一.Python正则表达式re模块简介 正则表达式,是一门相对通用的语言.简单说就是:用一系列的规则语法,去匹配,查找,替换等操作字符串,以达到对应的目的:此套规则,就是所谓的正则表达式.各个语言都有 ...
- Python 正则表达式——re模块介绍
Python 正则表达式 re 模块使 Python 语言拥有全部的正则表达式功能,re模块常用方法: re.match函数 re.match从字符串的起始位置匹配,如果起始位置匹配不成功,则matc ...
- python正则表达式——re模块
http://blog.csdn.net/zm2714/article/details/8016323 re模块 开始使用re Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先将 ...
- python正则表达式re模块详细介绍--转载
本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮. 正则表达式使用反斜杆( ...
- python 正则表达式re模块
#####################总结############## 优点: 灵活, 功能性强, 逻辑性强. 缺点: 上手难,旦上手, 会爱上这个东西 ...
- python正则表达式-re模块的爱恨情仇
利用python的re模块,使用正则表达式对字符串进行处理 # 编辑者:闫龙 import re restr = "abccgccc123def456ghi789jgkl186000&quo ...
- python正则表达式-re模块
目录: 一.正则函数 二.re模块调用 三.贪婪模式 四.分组 五.正则表达式修饰符 六.正则表达式模式 七.常见的正则表达式 导读: 想要使用python的正则表达式功能就需要调用re模块,re模块 ...
- python -- 正则表达式&re模块(转载)
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
随机推荐
- android之SQLlite操作
布局文件 创建了四个按键,分别对应增删改查 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- RESTful WebService入门(转)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 REST ...
- 每天一个linux命令(8):cat 命令
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [选项] [文件] ...
- [转]Java静态方法为什么不能访问非静态方法
非静态方法(不带static)可以访问静态方法(带static),但是反过来就不行,为什么呢? ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 publi ...
- publish_subscribe
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
- knockout_主页的demo复习
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- BZOJ1045 [HAOI2008] 糖果传递
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n<=987654321,表示小朋友的个数 ...
- PHP Code Reviewing Learning
相关学习资料 http://code-tech.diandian.com/post/2012-11-04/40042129192 http://ssv.sebug.net/高级PHP应用程序漏洞审核技 ...
- POJ1860Currency Exchange(Bellman + 正权回路)
Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 23938 Accepted: 867 ...
- 检测ADO.net拼接字符串中非法字符
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Refle ...