首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
Python 正则表达式_re模块_使用compile加速
时间:
2015-02-10 00:20:57
阅读:
160
评论:
0
收藏:
0
[点我收藏+]
标签:
使用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加速
标签:
原文地址:http://www.cnblogs.com/wspblog/p/4282698.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!