Python程序设计基础与应用课件第8章2.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python程序设计基础与应用课件第8章2.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 程序设计 基础 应用 课件
- 资源描述:
-
1、第8章 正则表达式董付国微信公众号:Python小屋1第8章 正则表达式 正则表达式是字符串处理的有力工具,正则表达式使用预定义的模式去匹配一类具有共同特征的字符串,可以快速、准确地完成复杂的查找、替换等处理要求,比字符串自身提供的方法提供了更强大的处理功能。例如使用字符串对象的split()方法只能指定一个分隔符,而使用正则表达式可以很方便地指定多个符号作为分隔符;使用字符串对象的split()并指定分隔符时,很难处理分隔符连续多次出现的情况,而正则表达式让这一切都变成非常轻松。正则表达式在文本编辑与处理、网页爬虫之类的场合中有重要应用。28.1 正则表达式语法 正则表达式由元字符及其不同组
2、合来构成,通过巧妙地构造正则表达式可以匹配任意字符串,并完成查找、替换、分隔等复杂的字符串处理任务。38.1.1 正则表达式基本语法4元字符元字符功能说明功能说明.匹配除换行符以外的任意单个字符*匹配位于*之前的字符或子模式的0次或多次出现+匹配位于+之前的字符或子模式的1次或多次出现-在之内用来表示范围|匹配位于|之前或之后的字符匹配行首,匹配以后面的字符开头的字符串$匹配行尾,匹配以$之前的字符结束的字符串?匹配位于?之前的0个或1个字符。当此字符紧随任何其他限定符(*、+、?、n、n,、n,m)之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心
3、的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串“oooo”中,“o+?”只匹配单个“o”,而“o+”匹配所有“o”表示位于之后的为转义字符num此处的num是一个正整数,表示子模式编号。例如,“(.)1”匹配两个连续的相同字符f换页符匹配n换行符匹配8.1.1 正则表达式基本语法5元字符元字符功能说明功能说明r匹配一个回车符b匹配单词头或单词尾B与b含义相反d匹配任何数字,相当于0-9D与d含义相反,等效于0-9s匹配任何空白字符,包括空格、制表符、换页符,与 fnrtv 等效S与s含义相反w匹配任何字母、数字以及下划线,相当于a-zA-Z0-9_W与w含义相反w含义相反,与“A-Za
4、-z0-9_”等效()将位于()内的内容作为一个整体来对待m,n前的字符或子模式重复至少m次,至多n次表示范围,匹配位于中的任意一个字符xyz反向字符集,匹配除x、y、z之外的任何字符a-z字符范围,匹配指定范围内的任何字符a-z反向范围字符,匹配除小写英文字母之外的任何字符8.1.1 正则表达式基本语法 如果以“”开头的元字符与转义字符相同,则需要使用“”,或者使用原始字符串。在字符串前加上字符r或R之后表示原始字符串,字符串中任意字符都不再进行转义。原始字符串可以减少用户的输入,主要用于正则表达式和文件路径字符串的情况,但如果字符串以一个斜线“”结束的话,则需要多写一个斜线,即以“”结束。
5、68.1.2 正则表达式扩展语法 正则表达式使用圆括号“()”表示一个子模式,圆括号内的内容作为一个整体对待,例如(red)+可以匹配redred、redredred等一个或多个重复red的情况。使用子模式扩展语法可以实现更加复杂的字符串处理功能。78.1.2 正则表达式扩展语法8语法功能说明(?P)为子模式命名(?iLmsux)设置匹配标志,可以是几个字母的组合,每个字母含义与编译标志相同(?:.)匹配但不捕获该匹配的子表达式(?P=groupname)表示在此之前的命名为groupname的子模式(?#.)表示注释(?=)用于正则表达式之前,表示如果=后的内容在字符串中不出现则匹配,但不返
6、回=之后的内容(?=)用于正则表达式之后,表示如果=后的内容在字符串中出现则匹配,但不返回=之后的内容(?!.)用于正则表达式之前,表示如果!后的内容在字符串中不出现则匹配,但不返回!之后的内容(?!.)用于正则表达式之后,表示如果!后的内容在字符串中不出现则匹配,但不返回!之后的内容8.1.3 正则表达式集锦最简单的正则表达式是普通字符串,可以匹配自身pjcython可以匹配python、jython、cythona-zA-Z0-9可以匹配一个任意大小写字母或数字abc可以一个匹配任意除a、b、c之外的字符python|perl或p(ython|erl)都可以匹配python或perl子模式
7、后面加上问号表示可选。r(http:/)?(www.)?python.org只能匹配http:/www.python.org、http:/python.org、www.python.org和python.orghttp只能匹配所有以http开头的字符串(pattern)*:允许模式重复0次或多次(pattern)+:允许模式重复1次或多次(pattern)m,n:允许模式重复mn次98.1.3 正则表达式集锦(a|b)*c:匹配多个(包含0个)a或b,后面紧跟一个字母c。ab1,:等价于ab+,匹配以字母a开头后面带1个至多个字母b的字符串。a-zA-Z1(a-zA-Z0-9._)4,19$:
8、匹配长度为5-20的字符串,必须以字母开头并且可带字母、数字、“_”、“.”的字符串。(w)6,20$:匹配长度为6-20的字符串,可以包含字母、数字、下划线。d1,3.d1,3.d1,3.d1,3$:检查给定字符串是否为合法IP地址。(134-9d8)|(1501289d8)$:检查给定字符串是否为移动手机号码。a-zA-Z+$:检查给定字符串是否只包含英文字母大小写。w+(w+.)+w+$:检查给定字符串是否为合法电子邮件地址。r(w)(?!.*1):查找字符串中每个字符的最后一次出现。r(w)(?=.*1):查找字符串中所有重复出现的字符。108.1.3 正则表达式集锦(-)?d+(.d
9、1,2)?$:检查给定字符串是否为最多带有2位小数的正数或负数。u4e00-u9fa5:匹配给定字符串中所有汉字。d18|d15$:检查给定字符串是否为合法身份证格式。d4-d1,2-d1,2:匹配指定格式的日期,例如2016-1-31。(?=.*a-z)(?=.*A-Z)(?=.*d)(?=.*,._).8,$:检查给定字符串是否为强密码,必须同时包含英语字母大写字母、英文小写字母、数字或特殊符号(如英文逗号、英文句号、下划线),并且长度必须至少8位。(?!.*/;=%?).+:如果给定字符串中包含、”、/、;、=、%、?则匹配失败。(.)1+:匹配任意字符的一次或多次重复出现。(?Pbw+
10、b)s+(?P=f):匹配连续出现两次的单词。(?P.)(?P=f)(?P.)(?P=g):匹配AABB形式的成语或字母组合。118.1.3 正则表达式集锦 使用时要注意的是,正则表达式只是进行形式上的检查,并不保证内容一定正确。例如上面的例子中,正则表达式d1,3.d1,3.d1,3.d1,3$可以检查字符串是否为IP地址,字符串888.888.888.888这样的也能通过检查,但实际上并不是有效的IP地址。同样的道理,正则表达式d18|d15$也只负责检查字符串是否为18位或15位数字,并不保证一定是合法的身份证号。128.2 直接使用正则表达式模块re处理字符串 Python标准库re模
11、块提供了正则表达式操作所需要的功能。13方法方法功能说明功能说明findall(pattern,string,flags)返回包含字符串中所有与给定模式匹配的项的列表match(pattern,string,flags)从字符串的开始处匹配模式,返回match对象或Nonesearch(pattern,string,flags)在整个字符串中寻找模式,返回match对象或Nonesplit(pattern,string,maxsplit=0)根据模式匹配项分隔字符串sub(pat,repl,string,count=0)将字符串中所有与pat匹配的项用repl替换,返回新字符串,repl可以是
12、字符串或返回字符串的可调用对象,作用于每个匹配的match对象8.2 直接使用正则表达式模块re处理字符串 其中函数参数“flags”的值可以是下面几个的不同组合(使用“|”进行组合):re.I(注意是大写字母I,不是数字1,表示忽略大小写)re.L(支持本地字符集的字符)re.M(多行匹配模式)re.S(使元字符“.”匹配任意字符,包括换行符)re.U(匹配Unicode字符)re.X(忽略模式中的空格,并可以使用#注释)148.2 直接使用正则表达式模块re处理字符串15 import re#导入re模块 text=alpha.beta.gamma delta#测试用的字符串 re.spl
展开阅读全文