Python正则表达式菜鸟教程

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。

re模块使Python语言拥有全部的正则表达式功能。

compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

本章节主要介绍Python中常用的正则表达式处理函数。

re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

函数语法:

re.match(pattern,string,flags=0)函数参数说明:

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num)或groups()匹配对象函数来获取匹配表达式。

以上实例运行输出结果为:

(0,3)None实例#!/usr/bin/pythonimportreline="Catsaresmarterthandogs"matchObj=re.match(r'(.*)are(.*).*',line,re.M|re.I)ifmatchObj:print"matchObj.group():",matchObj.group()print"matchObj.group(1):",matchObj.group(1)print"matchObj.group(2):",matchObj.group(2)else:print"Nomatch!!"以上实例执行结果如下:

matchObj.group():CatsaresmarterthandogsmatchObj.group(1):CatsmatchObj.group(2):smarterre.search方法re.search扫描整个字符串并返回第一个成功的匹配。

re.search(pattern,string,flags=0)函数参数说明:

匹配成功re.search方法返回一个匹配的对象,否则返回None。

(0,3)(11,14)实例#!/usr/bin/pythonimportreline="Catsaresmarterthandogs";searchObj=re.search(r'(.*)are(.*).*',line,re.M|re.I)ifsearchObj:print"searchObj.group():",searchObj.group()print"searchObj.group(1):",searchObj.group(1)print"searchObj.group(2):",searchObj.group(2)else:print"Nothingfound!!"以上实例执行结果如下:searchObj.group():CatsaresmarterthandogssearchObj.group(1):CatssearchObj.group(2):smarterre.match与re.search的区别re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

Nomatch!!search-->searchObj.group():dogs检索和替换Python的re模块提供了re.sub用于替换字符串中的匹配项。

语法:

re.sub(pattern,repl,string,count=0,flags=0)参数:

执行输出结果为:

A46G8HFD1134re.compile函数compile函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,供match()和search()这两个函数使用。

语法格式为:

re.compile(pattern[,flags])参数:

pattern:一个字符串形式的正则表达式

flags:可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

在上面,当匹配成功时返回一个Match对象,其中:

再看看一个例子:

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

注意:match和search是匹配一次findall匹配所有。

findall(string[,pos[,endpos]])参数:

查找字符串中的所有数字:

输出结果:

['123','456']['88','12']多个匹配模式,返回元组列表:

[('width','20'),('height','10')]re.finditer和findall类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

re.finditer(pattern,string,flags=0)参数:

1232433re.splitsplit方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:

re.split(pattern,string[,maxsplit=0,flags=0])参数:

re.compile()返回RegexObject对象。

group()返回被RE匹配的字符串。

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位OR(|)它们来指定。如re.I|re.M被设置成I和M标志:

模式字符串使用特殊的语法来表示一个正则表达式:

字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。

多数字母和数字前加一个反斜杠时会拥有不同的含义。

标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。

反斜杠本身需要使用反斜杠转义。

由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如r'\t',等价于'\\t')匹配相应的特殊字符。

下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。

jim

264***7522@qq.com

#!/usr/bin/pythonimportreline="Catsaresmarterthandogs"matchObj=re.match(r'(.*)are(.*).*',line,re.M|re.I)ifmatchObj:print"matchObj.group():",matchObj.group()print"matchObj.group(1):",matchObj.group(1)print"matchObj.group(2):",matchObj.group(2)else:print"Nomatch!!"正则表达式:

r'(.*)are(.*).*'解析:

首先,这是一个字符串,前面的一个r表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个r可有可无。

matchObj.group()等同于matchObj.group(0),表示匹配到的完整文本字符

matchObj.group(1)得到第一组匹配结果,也就是(.*)匹配到的

matchObj.group(2)得到第二组匹配结果,也就是(.*)匹配到的

因为只有匹配结果中只有两组,所以如果填3时会报错。

CrazyDemo

444***899@qq.com

'(P...)'分组匹配

例:身份证1102231990xxxxxxxx

importres='1102231990xxxxxxxx'res=re.search('(P\d{3})(P\d{3})(P\d{4})',s)print(res.groupdict())

THE END
1.b/s模式指的是什么b/s模式指的是WEB兴起后的一种网络结构模式,也叫Browser/Server模式(浏览器/服务器)、B/S结构,WEB浏览器是客户端最主要的应用软件。B/S模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。约伴故友 2024-10-08 15:38:23相关...https://edu.iask.sina.com.cn/jy/3665WYg94fr.html
2.AWR报告详解柏林之花Parses:SQL解析的次数.每秒解析次数,包括fast parse,soft parse和hard parse三种数量的综合。 软解析每秒超过300次意味着你的"应用程序"效率不高,调整session_cursor_cache。在这里,fast parse指的是直接在PGA中命中的情况(设置了session_cached_cursors=n);soft parse是指在shared pool中命中的情形;hard parse则是...http://blog.chinaunix.net/uid-7847832-id-3486670.html
3.电脑维修听声音判故障BMgiXdv.B 9YwK1[G6/ 3.“嘀...嘀...”的连续有间隔的长音。 uF/l,[0v | Rf4^vN 这是内存报警的声音,一般是内存松动,内存的金手指与内存插槽接触不良,内存的金手指氧化,内存的某个芯片有故障等原因。 (生锈了就拿橡皮擦擦再装上,会长教的) y?zNxk/p g#2Q1t,~U 4.“嘀......http://www.360doc.com/content/12/0608/18/7215767_216902924.shtml
1.高校实验教学管理12篇(全文)[摘 要] 在高校教学过程中,教学质量的提升是学校发展过程中长期考虑的因素,同时教学信息化管理的模式水平一样有着很重要的作用。在高校的办公效率的提升方面需要有很多基础性的管理方式的完善,在本文中,就高校实验教学中的信息化管理模式进行分析讨论,通过引入B/S模式下的管理方式来实现教学管理信息系统的整套设计、...https://www.99xueshu.com/w/ikeyoaw6b3s3.html
2.win11系统快捷键大全附详细功能介绍windows11Windows系列快速设置面板是Win11新增加的一个模块,可以完成一些常用功能(如WIFI、飞行模式、投影、夜间模式、亮度、音量等)的快速启闭。Win+A是这项功能的快捷键,按下后可以一键呼出这个面板。 2. Win+B 快速跳转系统托盘 Win+B是系统托盘快捷键,按下后焦点会移至托盘,击打回车后就能直接看到托盘图标。 https://m.jb51.net/os/win11/794110.html
3.C/S和B/S两种架构区别与优缺点分析腾讯云开发者社区4)客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解) 三、B/S对C/S的改进和扩展 正如前文所说,C/S和B/S都可以进行同样的业务处理,但是B/S随着Internet技术的兴起,是对C/S结构的一种改进或者扩展的结构。相对于C/S,B/S具有如下...https://cloud.tencent.com/developer/article/1528732
4.常州市教育科学“十三五”规划课题(创新立项)“主体间性理念下...3.What is the author’s general attitude towards the book? A.Contradictory. B.Supportive. C.Cautious. D.Critical. 4.What is the author likely to write about after the last paragraph? A.Problems with the book. B.Brooks’s life experiences. C.Death of the characters D. Brooks translation...http://www.yz.czedu.cn/html/article5548646.html
5.B/S架构及其运行原理bs结构B/S(Brower/Server,浏览器/服务器)模式又称B/S结构,是Web兴起后的一种网络结构模式。Web浏览器是客户端最主要的应用软件。 这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用; 客户机上只需要安装一个浏览器,服务器上安装SQL Server,Oracle, MySql等数据库;浏览器通过...https://blog.csdn.net/qq_40587575/article/details/79673478/
6.软件工程导论作业系统采用 B/S 结构,前台使用智能移动终端如智能手机、平板电脑做客户端,所有的操作都是笔触式和手写输入,操作要方便,适宜于任何服务人员http://http://www.unjs.com/news/55840068E518E83F.html使用。 4. 超长传送 传送距离可达 100 米,室外传送距离可送300 米。 根据案例的描述,请你完成下列任务: ...https://www.unjs.com/zuixinxiaoxi/ziliao/20170805000008_1416273.html
7.音视频学习b:量化位数(bit)。 s:声道数。 auf=audio/L16;rate=16000 40ms的单声道、16Khz、量化位数为16的数据:(16*16*1)/8 * 40 =1280B 1.1.4 音频的编码 音频数据压缩编码的方法有多种,可分为无损压缩和有损压缩两大类。无损压缩主要包含各种熵编码;有损压缩则分为波形编码、参数编码、感知编码和混合编码。https://www.jianshu.com/p/28dd7f1e58d0
8.自动挡PRNDSLM表示什么意思,新手正确操作技巧图解S(Sport)档 S代表运动(https://www.xiaozongshi.com)模式(Sport),曾经在法系车中也代表雪地模式(Snow)。不过现在绝大多数车型的S档都是代表运动模式,雪地模式基本已经脱离自动挡模式上,而进入了更高级的车辆驾驶模式选择功能,如果有的话也是用1个雪花标志所代替。现在的S档泛指运动模式,顾名思义就是让车辆驾驶...https://www.yoojia.com/ask/16-11485926011913404425.html
9.金铲铲之战3.16b更新内容金铲铲8月24日更新解读金铲铲之战3.16b更新了什么?金铲铲之战在8月24日本周四更新了3.16b版本,对S3.5和S9赛季的玩法都进行了平衡调整,接下来就让我们一起了解一下吧。 金铲铲之战3.16b更新S9 一、英雄调整 慎 友军护盾:275/350/2000 ? 225/275/1500 浅谈:慎施加给友军的护盾遭到大砍,这对当前热门堡垒体系以及神谕体系无疑是...https://app.ali213.net/mip/gl/1129097.html