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语言的优雅之处
Jul 04 Python
python字符串排序方法
Aug 29 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
Python基础之函数的定义与使用示例
Mar 23 Python
利用python如何在前程无忧高效投递简历
May 07 Python
python取余运算符知识点详解
Jun 27 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
python中time库的实例使用方法
Oct 31 Python
python实现udp聊天窗口
Mar 31 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 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
一个目录遍历函数
2006/10/09 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python中关于使用模块的基础知识
2015/05/24 Python
python flask 多对多表查询功能
2017/06/25 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
中东奢侈品市场:Coveti
2019/05/12 全球购物
电子工程专业毕业生求职信
2014/03/14 职场文书
安全生产承诺书
2014/03/26 职场文书
大班开学家长寄语
2014/04/04 职场文书
岗位安全生产责任书
2014/07/28 职场文书
讲党性心得体会
2014/09/03 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
实习单位推荐信
2015/03/27 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
人力资源部工作计划
2019/05/14 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
Python OpenCV形态学运算示例详解
2022/04/07 Python