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 zip文件 压缩
Dec 24 Python
Python多线程编程(四):使用Lock互斥锁
Apr 05 Python
python装饰器初探(推荐)
Jul 21 Python
python实现基于SVM手写数字识别功能
May 27 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
python线性插值解析
Jul 05 Python
Python设计密码强度校验程序
Jul 30 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 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开启安全模式后禁用的函数集合
2011/06/26 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
详解python中的线程
2018/02/10 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
百度软件工程师职位
2013/02/14 面试题
平面设计岗位职责
2013/12/14 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
元旦主持词开场白
2015/05/29 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server