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

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. Map的遍历

    @Test public void test() { Map<String,String> usersmap = new HashMap<>(); usersmap.put(& ...

  2. Javascript ----字符串(String)中的方法

    涉及字符串时,常用到的几个方法... --------------------------------------------------------------------------------- ...

  3. STM32下载显示target dll has been cancelled

    使用MDK 4.74向STM32下载时出现各种错误,而且时隐时现, Internal command error.Error:Flash download failed. Target DLL has ...

  4. CWNP宣布中国首位CWNE获得者——朱志立(Kevin Zhu)

    CWNP宣布中国首位CWNE获得者——朱志立(Kevin Zhu)   Kevin Zhu获得了全球CWNE认证无线网络专家的第134号,CWNE被公认为IT行业最难获取的10大认证之一.     [ ...

  5. hdu 2090

    PS:输入麻烦...我还以为是输入一个就输出一个...后来看了大神的才知道....暴力破解了... 代码; #include "stdio.h" int main(){ ,a,b; ...

  6. 中国省市 JS代码

    很实用的一段JS代码, 用户注册的时候,选择地址常用到.代码如下: <script language="javascript"> var g_selProvince; ...

  7. Ubuntu下安装Apache mysql php的命令

    sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-serversudo apt-get install php5-gd ...

  8. ERP联系记录管理(十七)

    联系记录管理修改页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Co ...

  9. 转:Web.config配置文件详解(新手必看)

    转:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置文件 ...

  10. Oracle 触发器,事物

    触发器:自动执行,可以实现表的约束. 1.行级触发器: CREATE OR REPLACE TRIGGER del_deptid AFTER DELETE ON deptment --触发器条件 DE ...