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中遍历文件的3个方法
Sep 02 Python
python使用pil生成缩略图的方法
Mar 26 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
深入了解Python在HDA中的应用
Sep 05 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
python实现飞行棋游戏
Feb 05 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 Python
python 如何快速复制序列
Sep 07 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
PHP PDOStatement::bindColumn讲解
2019/01/30 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
jQuery 解析xml文件
2009/08/09 Javascript
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
优秀医生事迹材料
2014/02/12 职场文书
成人继续教育实施方案
2014/03/01 职场文书
设备售后服务承诺书
2014/05/30 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
面试自我评价范文
2014/09/17 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
单位工资证明范本
2015/06/12 职场文书
讲座新闻稿
2015/07/18 职场文书