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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
Python中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
Python 专题一 函数的基础知识
Mar 16 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
对numpy中布尔型数组的处理方法详解
Apr 17 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
python属于哪种语言
Aug 16 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
python 闭包函数详细介绍
Apr 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
php empty()与isset()区别的详细介绍
2013/06/17 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
python内存动态分配过程详解
2019/07/15 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
python excel多行合并的方法
2020/12/09 Python
描述RIP和OSPF区别以及特点
2015/01/17 面试题
统计系教授推荐信
2014/02/28 职场文书
本科生求职信
2014/06/17 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
会议欢迎词范文
2015/01/27 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
校园新闻稿范文
2015/07/18 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript
设置IIS Express并发数
2022/07/07 Servers