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中随机函数random用法实例
Apr 30 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
Python 中的 else详解
Apr 23 Python
解决pandas 作图无法显示中文的问题
May 24 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
Python机器学习之基于Pytorch实现猫狗分类
Jun 08 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
WINXP下apache+php4+mysql
2006/11/25 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
Python 2.7中文显示与处理方法
2018/07/16 Python
python用match()函数爬数据方法详解
2019/07/23 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
暇步士官网:Hush Puppies
2016/09/22 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
幼儿教师寄语集锦
2014/04/03 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
飞越疯人院观后感
2015/06/09 职场文书
Python基础之pandas数据合并
2021/04/27 Python
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android