Python模块学习 re 正则表达式


Posted in Python onMay 19, 2011

re.match

re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。

import re 
text = "JGood is a handsome boy, he is cool, clever, and so on..." 
m = re.match(r"(\w+)\s", text) 
if m: 
print m.group(0), '\n', m.group(1) 
else: 
print 'not match'

re.match的函数原型为:re.match(pattern, string, flags)
第一个参数是正则表达式,这里为"(\w+)\s",如果匹配成功,则返回一个Match,否则返回一个None;
第二个参数表示要匹配的字符串;
第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
re.search

re.search函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。

import re 
text = "JGood is a handsome boy, he is cool, clever, and so on..." 
m = re.search(r'\shan(ds)ome\s', text) 
if m: 
print m.group(0), m.group(1) 
else: 
print 'not search'

re.search的函数原型为: re.search(pattern, string, flags)
每个参数的含意与re.match一样。
re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
re.sub

re.sub用于替换字符串中的匹配项。下面一个例子将字符串中的空格 ' ' 替换成 '-' :

import re 
text = "JGood is a handsome boy, he is cool, clever, and so on..." 
print re.sub(r'\s+', '-', text)

re.sub的函数原型为:re.sub(pattern, repl, string, count)
其中第二个函数是替换后的字符串;本例中为'-'
第四个参数指替换个数。默认为0,表示每个匹配项都替换。
re.sub还允许使用函数对匹配项的替换进行复杂的处理。如:re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0);将字符串中的空格' '替换为'[ ]'。
re.split

可以使用re.split来分割字符串,如:re.split(r'\s+', text);将字符串按空格分割成一个单词列表。
re.findall

re.findall可以获取字符串中所有匹配的字符串。如:re.findall(r'\w*oo\w*', text);获取字符串中,包含'oo'的所有单词。
re.compile

可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率。下面是一个正则表达式对象的一个例子:

import re 
text = "JGood is a handsome boy, he is cool, clever, and so on..." 
regex = re.compile(r'\w*oo\w*') 
print regex.findall(text) #查找所有包含'oo'的单词 
print regex.sub(lambda m: '[' + m.group(0) + ']', text) #将字符串中含有'oo'的单词用[]括起来。

更详细的内容,可以参考Python手册。
Python 相关文章推荐
python错误处理详解
Sep 28 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
python如何实现远程控制电脑(结合微信)
Dec 21 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
Python修改列表值问题解决方案
Mar 06 Python
Python操作Excel把数据分给sheet
May 20 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
python 使用建议与技巧分享(四)
Aug 18 Python
python matplotlib库的基本使用
Sep 23 Python
PYTHON正则表达式 re模块使用说明
May 19 #Python
python 随机数生成的代码的详细分析
May 15 #Python
python 生成不重复的随机数的代码
May 15 #Python
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 #Python
Python中删除文件的程序代码
Mar 13 #Python
python 中文乱码问题深入分析
Mar 13 #Python
学习python处理python编码问题
Mar 13 #Python
You might like
php mysql索引问题
2008/06/07 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
python实现数据分析与建模
2019/07/11 Python
python爬取youtube视频的示例代码
2021/03/03 Python
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
运动会解说词100字
2014/01/31 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
运动会班级口号
2014/06/09 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
党代会心得体会
2014/09/04 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
创业计划书之农家乐
2019/10/09 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书