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中操作MySQL入门实例
Feb 08 Python
深入解析Python中的WSGI接口
May 11 Python
Python脚本完成post接口测试的实例
Dec 17 Python
Python转换时间的图文方法
Jul 01 Python
解决Python3 控制台输出InsecureRequestWarning问题
Jul 15 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
Python爬虫requests库多种用法实例
May 28 Python
python os模块常用的29种方法使用详解
Jun 02 Python
python 装饰器的使用示例
Oct 10 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
Python最基本的输入输出详解
2015/04/25 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
python内置数据类型之列表操作
2018/11/12 Python
总结python中pass的作用
2019/02/27 Python
python实现局域网内实时通信代码
2019/12/22 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
《难忘的泼水节》教学反思
2014/02/27 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
法院信息化建设方案
2014/05/21 职场文书
中专生自荐信
2014/06/25 职场文书
工程安全生产协议书
2014/11/21 职场文书
求职自我评价范文
2015/03/09 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS