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查看多台服务器进程的脚本分享
Jun 11 Python
python实现多线程采集的2个代码例子
Jul 07 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
Python中用Decorator来简化元编程的教程
Apr 13 Python
python在文本开头插入一行的实例
May 02 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Python如何合并多个字典或映射
Jul 24 Python
Python基于locals返回作用域字典
Oct 17 Python
python Xpath语法的使用
Nov 26 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导出CSV抽象类实例
2014/09/24 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
浅谈Python的异常处理
2016/06/19 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
机关单位人员学雷锋心得体会
2014/03/10 职场文书
企业文明单位申报材料
2014/05/16 职场文书
导师工作推荐信范文
2014/05/17 职场文书
投诉信范文
2015/07/02 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers