Python re模块介绍


Posted in Python onNovember 30, 2014

Python中转义字符

正则表达式使用反斜杠” \ “来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用” \\\\ “表示正则表达式中的” \ “,因为正则表达式中如果要匹配” \ “,需要用\来转义,变成” \\ “,而Python语法中又需要对字符串中每一个\进行转义,所以就变成了” \\\\ “。
上面的写法是不是觉得很麻烦,为了使正则表达式具有更好的可读性,Python特别设计了原始字符串(raw string),需要提醒你的是,在写文件路径的时候就不要使用raw string了,这里存在陷阱。raw string就是用'r'作为字符串的前缀,如 r”\n”:表示两个字符”\”和”n”,而不是换行符了。Python中写正则表达式时推荐使用这种形式。

正则表达式元字符说明

.  匹配除换行符以外的任意字符
^  匹配字符串的开始
$  匹配字符串的结束
[] 用来匹配一个指定的字符类别
?  对于前一个字符字符重复0次到1次
*  对于前一个字符重复0次到无穷次
{} 对于前一个字符重复m次
{m,n} 对前一个字符重复为m到n次
\d 匹配数字,相当于[0-9]
\D 匹配任何非数字字符,相当于[^0-9]
\s 匹配任意的空白符,相当于[ fv]
\S 匹配任何非空白字符,相当于[^ fv]
\w 匹配任何字母数字字符,相当于[a-zA-Z0-9_]
\W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]
\b 匹配单词的开始或结束

模块函数说明即举例
re.compile 将正则表达式编译成pattern对象

compile(pattern, flags=0)

第一个参数:规则
第二个参数:标志位

re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None

match(pattern, string, flags=0)

第一个参数:规则
第二个参数:表示要匹配的字符串
第三个参数:标致位,用于控制正则表达式的匹配方式

re.search 匹配整个字符串,直到找到一个匹配

search(pattern, string, flags=0)

第一个参数:规则
第二个参数:表示要匹配的字符串
第三个参数:标致位,用于控制正则表达式的匹配方式

>>> import re
>>> pattern = re.compile(r'linuxeye')
>>> match = pattern.match('3water.com')
>>> print match
<_sre.SRE_Match object at 0x7f4e96e61c60>
>>> print match.group()
linuxeye
>>> m = pattern.match('blog.3water.com') #match匹配开头,没找到
>>> print m
None
>>> m = pattern.search('blog.3water.com') #search匹配整个字符串,直到找到一个匹配
>>> print m
<_sre.SRE_Match object at 0x7f15abfc6b28>
>>> print m.group()
linuxeye
>>> m = re.match(r'linuxeye','3water.com') #不用re.compile
>>> print m
<_sre.SRE_Match object at 0x7f4e96e61b90>
>>> print m.group()
linuxeye
>>> m = re.match(r'linuxeye','3water.com')
>>> print m
None

re.split 用于来分割字符串

split(pattern, string, maxsplit=0)

第一个参数:规则
第二个参数:字符串
第三个参数:最大分割字符串,默认为0,表示每个匹配项都分割
实例:分割所有的字符串

>>> import re
>>> test_str = "1 2 3 4 5"
>>> re.split(r'\s+',test_str)
['1', '2', '3', '4', '5']
>>> re.split(r'\s+',test_str,2) #分割前2个
['1', '2', '3 4 5']
 
>>> test_str = "1 . 2. 3 .4 . 5"
>>> re.split(r'\.',test_str)
['1 ', ' 2', ' 3 ', '4 ', ' 5']
>>> re.split(r'\.',test_str,3)
['1 ', ' 2', ' 3 ', '4 . 5']

re.findall 在目标字符串查找符合规则的字符串

findall(pattern, string, flags=0)

第一个参数:规则
第二个参数:目标字符串
但三个参数:后面还可以跟一个规则选择项
返回的结果是一个列表,建中存放的是符合规则的字符串,如果没有符合规则的字符串呗找到,就会返回一个空值

>>> import re
>>> test_mail = '<test01@gmail.com> <test02@gmail.org> test03@gmail.net'
>>> mail_re = re.compile(r'\w+@g....\.[a-z]{3}')
>>> re.findall(mail_re,test_mail)
['test01@gmail.com', 'test02@gmail.org', 'test03@gmail.net']

re.sub 以正则表达式为基础的替换工作

sub(pattern, repl, string, count=0)

第一个参数:规则
第二个参数:替换后的字符串
第三个参数:字符串
第四个参数:替换个数。默认为0,表示每个匹配项都替换

>>> test = 'blog.3water.com 3water.com'
>>> test_re = re.compile(r'\.')
>>> re.sub(test_re,'--',test)
'blog--linuxeye--com linuxeye--com'
>>> re.sub(test_re,'--',test,1)
'blog--3water.com 3water.com'
Python 相关文章推荐
用python读写excel的方法
Nov 18 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
wxpython绘制音频效果
Nov 18 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
Python Http请求json解析库用法解析
Nov 28 Python
python3实现无权最短路径的方法
May 12 Python
Python os模块介绍
Nov 30 #Python
Python实现的检测网站挂马程序
Nov 30 #Python
Python实现网站文件的全备份和差异备份
Nov 30 #Python
Python3 能振兴 Python的原因分析
Nov 28 #Python
Python3 正在毁灭 Python的原因分析
Nov 28 #Python
关于你不想知道的所有Python3 unicode特性
Nov 28 #Python
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 #Python
You might like
php处理斐波那契数列非递归方法
2012/02/04 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
php中session退出登陆问题
2014/02/27 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
php生成zip文件类实例
2015/04/07 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
PHP时间函数使用详解
2019/03/21 PHP
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
python实现简单的计时器功能函数
2015/03/14 Python
python脚本监控docker容器
2016/04/27 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python pymongo模块用法示例
2018/03/31 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
python绘制地震散点图
2019/06/18 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
儿科主治医生个人求职信
2013/09/23 职场文书
大学生蛋糕店创业计划书
2014/01/13 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
火灾现场处置方案
2014/05/28 职场文书
服务承诺书
2015/01/19 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书