正则表达式也一直用,但是没系统的总结过,今天借这个时间梳理一下。

Python中的正则表达式操作依靠re模块儿完成。

常用的方法:

re.compile(pattern,flags=0)

#返回一个编译过的正则表达式re对象,可以优化执行速度。

demo:

r=re.compile(r'(http:\\)?(www\.)?cnblogs\.com')

m=r.match('www.cnblogs.com')

print(m.group(0))  

#若果不编译就要这样写了

m=re.match(r'(http:\\)?(www\.)?cnblogs\.com','www.cnblogs.com')

print(m.group(0))

#说明:re在运行时编译,效率嘛要比上一种方法低一点儿。突然想试试低多少,写个demo看看。

 import time,re

 def main():
pattern=r'(http:\\)?(www\.)?cnblogs\.com'
url='www.cnblogs.com'
## r=re.compile(pattern)
s1=time.time()
r=re.compile(pattern)
a=r.match(url)
print('time is'+str(time.time()-s1)+"\t"+a.group())
s2=time.time()
m=re.match(pattern,url)
print('time is'+str(time.time()-s2)+"\t"+m.group())
pass if __name__=="__main__":
main(); >>> ================================ RESTART ================================
>>>
time is0.0009999275207519531 www.cnblogs.com
time is0.0 www.cnblogs.com
>>>

测试代码写的不算严谨,但结果倒也有趣,至少说明了两个问题:

1.由于两次匹配采用的pattern相同,Python内部进行了优化,所以第二次时间接近为零。

2.时间花费主要消耗在了正则表达式编译上,匹配上的时间与之相比很少。

3.如果只是做一次匹配,两种写法无所谓。

同理的以下方法也可以参考上边的两种写法:

re.search()#搜索字符串的内容,这个方法很好理解,就不做测试了。

re.sub()#这个用的比较少,写个demo给大家看一下,其实就相当于str.replace()方法,只不过它更灵活一点。

 import time,re

 def main():
pattern=r'(http:\\)?(www\.)?cnblogs\.com'
url1='www.cnblogs.com'
url2='cnblogs.com'
m=re.sub(pattern,'baidu.com','sss'+url1+'eee')
print(m)
if __name__=="__main__":
main(); >>> ================================ RESTART ================================
>>>
sssbaidu.comeee
>>>

re.split()#利用正则表达式去分割一个字符串 demo

 import time,re

 def main():
d='12|234|23423|234|'
l=re.split(r'\|',d)
print(str(l))
if __name__=="__main__":
main();
>>> ================================ RESTART ================================
>>>
['', '', '', '', '']

对于re.match()返回的matchobject有以下几个方法:

m.group(n)#返回匹配中的组和子组的信息。

m.start()

m.end()

m.span()

这几个是比较常用的方法,另外推荐两篇比较好的正则表达式教程:

http://dragon.cnblogs.com/archive/2006/05/08/394078.html

Python正则表达式总结的更多相关文章

  1. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  2. Python正则表达式中的re.S

    title: Python正则表达式中的re.S date: 2014-12-21 09:55:54 categories: [Python] tags: [正则表达式,python] --- 在Py ...

  3. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  4. python正则表达式re

    Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...

  5. Python正则表达式详解

    我用双手成就你的梦想 python正则表达式 ^ 匹配开始 $ 匹配行尾 . 匹配出换行符以外的任何单个字符,使用-m选项允许其匹配换行符也是如此 [...] 匹配括号内任何当个字符(也有或的意思) ...

  6. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  7. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  8. python正则表达式 小例几则

    会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...

  9. Python 正则表达式-OK

    Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上 ...

  10. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)

    http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...

随机推荐

  1. 0125 多线程 继承Thread 练习

    //定义一个继承Thread类的类,并覆盖run()方法,在run()方法中每隔100毫秒打印一句话public class Csh extends Thread{ public void run() ...

  2. 利用pl/sql developer进行远程连接oracle server出现的问题及解决办法

    由于本人刚刚给自己的笔记本做了系统,由原来的32位系统编程现在的64位系统,所以,很多软件由于兼容性,不得不重新安装...当我安完了pl/sql developer工具后,就满心欢喜的去连接远程ora ...

  3. (转)JSON数据格式和js操作json总结

    原:http://niutuku.com/tech/javaScript/273643.shtml JSON数据格式和js操作json总结 来源:niutuku.com |         vince ...

  4. HackRF实现GPS欺骗教程

    硬件平台:HackRF One软件平台:MAC运行环境搭建系统平台:OS X 10.11 EI CapitanGPS终端:One Plus手机,飞行模式,仅GPS定位,GPS test App文章特点 ...

  5. HDU5772 (最小割)

    Problem String problem (HDU5772) 题目大意 给定一个由数字组成的字符串(n<=100),挑选出一些字符组成一个新的字符串. 字符串的价值: sigma w[id( ...

  6. Digit (数位DP)

    一个正整数的价值就是把这个数的十进制写出来之后,最长的等差子串的长度. 求出在[l,r]范围内的数字的价值总和. (l<=r<=10^12) 记f[now,ml,l,d,pre,st,li ...

  7. C#_WinForm接收命令行参数

    C#_WinForm接收命令行参数 2014-08-03 10:17 534人阅读 评论(0) 收藏 举报 首先,我要仔细的声明下,本文讲的是接受命令行参数,让程序启动.而不是启动那个黑黑的框...我 ...

  8. [转]在Windows中配置Rsync同步

    在Windows中配置Rsync同步 Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同 时保持原来文件的权限.时间.软硬链接.第一次同步时 rsync 会复制全部内容,下次 ...

  9. .csproj文件的配置 IIS可以调试

    <ProjectExtensions> <VisualStudio> <FlavorProperties GUID="{349c5851-65df-11da-9 ...

  10. JSONP解决ajax跨域问题

    在A域名下,用ajax请求B域名下的请求,会报类似这样的错误:No 'Access-Control-Allow-Origin' header is present on the requested r ...