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的pandas框架操作Excel文件中的数据教程
Mar 31 Python
详解Python的Django框架中的通用视图
May 04 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
python抓取网页中链接的静态图片
Jan 29 Python
Python IDLE清空窗口的实例
Jun 25 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python标记语句块使用方法总结
Aug 05 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
Python在线和离线安装第三方库的方法
Oct 31 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
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
php中的MVC模式运用技巧
2007/05/03 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
python 基础教程之Map使用方法
2017/01/17 Python
python实现日常记账本小程序
2018/03/10 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
施工员岗位职责范本
2015/04/11 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书