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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
Python读取properties配置文件操作示例
Mar 29 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
对python 命令的-u参数详解
Dec 03 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
基于h5py的使用及数据封装代码
Dec 26 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 Python
Python3 类型标注支持操作
Jun 02 Python
如何通过一篇文章了解Python中的生成器
Apr 02 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
ThinkPHP安装和设置
2015/07/27 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
关于element的表单组件整理笔记
2021/02/05 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python实现建立SSH连接的方法
2015/06/03 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
浅谈Django的缓存机制
2018/08/23 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
如何使用python操作vmware
2019/07/27 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
学习新党章思想汇报
2014/01/09 职场文书
医院总经理岗位职责
2014/02/04 职场文书
致跳远运动员加油稿
2014/02/11 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
党员证明信
2015/06/19 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS