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魔术方法详解
Feb 14 Python
Python Requests安装与简单运用
Apr 07 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
python八皇后问题的解决方法
Sep 27 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
python如何为list实现find方法
May 30 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
学习经验交流会主持词
2014/04/01 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
公诉意见书范文
2015/06/05 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
创业计划书之养殖业
2019/10/11 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers