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脚本实现查找webshell的方法
Jul 31 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
Python二次规划和线性规划使用实例
Dec 09 Python
python中的split()函数和os.path.split()函数使用详解
Dec 21 Python
Python实现图像的垂直投影示例
Jan 17 Python
如何使用Python抓取网页tag操作
Feb 14 Python
python中np是做什么的
Jul 21 Python
浅析Python 责任链设计模式
Sep 11 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 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 Javascript
PHP图片上传类带图片显示
2006/11/25 PHP
php中大括号作用介绍
2012/03/22 PHP
php单例模式的简单实现方法
2016/06/10 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
js省市区级联查询(插件版&无插件版)
2017/03/21 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python利用高阶函数实现剪枝函数
2018/03/20 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
酒吧员工的岗位职责
2013/11/26 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
学生评语大全
2014/04/18 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
英文版辞职信
2015/02/28 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
楚门的世界观后感
2015/06/03 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript