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使用自定义user-agent抓取网页的方法
Apr 15 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
python:socket传输大文件示例
Jan 18 Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
python类的实例化问题解决
Aug 31 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Django实现随机图形验证码的示例
Oct 15 Python
Selenium 安装和简单使用的实现
Dec 04 Python
python中yield的用法详解
Jan 13 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 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开源建站平台小结
2010/04/22 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
URL中“#” “?” &amp;“”号的作用浅析
2017/02/04 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
使用python实现rsa算法代码
2016/02/17 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
用C语言实现文件读写操作
2013/10/27 面试题
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
员工入职担保书范文
2014/04/01 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
运动会开幕式主持词
2015/07/01 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
责任书格式
2019/04/18 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP