Python正则表达式总结
正则表达式也一直用,但是没系统的总结过,今天借这个时间梳理一下。
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正则表达式总结的更多相关文章
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- Python正则表达式中的re.S
title: Python正则表达式中的re.S date: 2014-12-21 09:55:54 categories: [Python] tags: [正则表达式,python] --- 在Py ...
- Python 正则表达式入门(初级篇)
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...
- python正则表达式re
Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...
- Python正则表达式详解
我用双手成就你的梦想 python正则表达式 ^ 匹配开始 $ 匹配行尾 . 匹配出换行符以外的任何单个字符,使用-m选项允许其匹配换行符也是如此 [...] 匹配括号内任何当个字符(也有或的意思) ...
- 比较详细Python正则表达式操作指南(re使用)
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
- Python正则表达式学习摘要及资料
摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...
- python正则表达式 小例几则
会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...
- Python 正则表达式-OK
Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上 ...
- Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...
随机推荐
- HTTPS Everywhere – 保障隐私和信息安全的利器
HTTPS Everywhere 是一款 Chrome 扩展程序,对于支持 HTTPS 的网站默认打开 HTTPS 加密传输来保障信息安全(HTTPS 介绍). HTTPS Everywhere 受到 ...
- AlarmManager
转自:http://blog.csdn.net/wangxingwu_314/article/details/8060312 1.AlarmManager,顾名思义,就是“提醒”,是Android中常 ...
- SVN不能提交时的处理
下面的是我的截图: EMZ3.0 qrh$ svn commit -m ""svn: E155010: Commit failed (details follow):svn: E1 ...
- hive 中 union all
hive 中的union all是不能在sql语句的第一层使用的,否则会报 Top level UNION is not supported currently 错误: 例如如下的方式: select ...
- UITableView错误 ‘unable to dequeue a cell with identifier Cell'
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequeueReusableCellWithIdentif ...
- 黑马程序员——【Java基础】——Java概述
---------- android培训.java培训.期待与您交流! ---------- 一.Java语言概述及三大技术架构 1.Java语言概述 Java是SUN公司于1995年推出的一种面向I ...
- Unity3D内置资源包简介
Custom Package:倒入第三方的资源包,如果资源包存在中文路径,很容易导入入失败. Character Controller:角色控制相关脚本,第一第三人称的prefab; Glass Re ...
- magento问题集2
SQLSTATE[42S02]: Base table or view not found: 1146 Table XXXXXX 安装Galathemes.com theme插件. 首页无法打开,提示 ...
- js优化提升访问速度
一.给JS文件减肥. 有的人为了给网站增加炫目效果,往往会使用一些JS效果代码,这在上个世纪似乎还很流行,对于现在来说,最好在用户体验确实需要的情况下,使用这些东西.至于希望给自己的JS文件减肥的童鞋 ...
- magento -- 如何为商品分类(category)添加自定义属性
在magento 中,由于使用了强大的EAV设计方法,我们可以很方便的给商品添加任意数量的属性.然而magento 没有给我们提供给商品分类添 加属性的功能.尽管我们知道magento所采用的EAV设 ...