Python编程基础(第3版)(微课版)课件 8.4 re模块_第1页
Python编程基础(第3版)(微课版)课件 8.4 re模块_第2页
Python编程基础(第3版)(微课版)课件 8.4 re模块_第3页
Python编程基础(第3版)(微课版)课件 8.4 re模块_第4页
Python编程基础(第3版)(微课版)课件 8.4 re模块_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

re模块1re模块常用函数目录认识re模块2正则表达式语法3【任务8-4】匹配字符串信息4Python中的re模块提供了与Perl语言类似的正则表达式匹配操作。re模块将正则表达式编译成模式对象,然后通过模式对象执行模式匹配搜索、字符串分割、字符串替换等操作。re模块使Python拥有了全部的正则表达式功能。正则表达式是对字符串进行操作的一种逻辑公式。通过正则表达式,程序开发人员可以对指定的文本实现匹配测试、内容查找、内容替换、字符串分割等。正则表达式的设计思想是使用一种描述性的语言给字符串定义一个规则,凡是符合规则的字符串即可匹配成功,否则匹配不成功。认识re模块re模块的相关函数及作用说明如下表。认识re模块函数名称函数作用re.findall匹配字符串中的全部样式,返回组合列表re.search匹配符合样式的第一个位置,返回包含匹配信息的对象re.split按匹配样式分割字符串,返回列表re.sub替换匹配样式的文本,返回字符串re.match匹配0个到多个样式,返回包含匹配信息的对象re.fullmatch匹配整个字符串,返回包含匹配信息的对象re.finditer匹配字符串中的全部样式,返回迭代器保存的匹配对象re.subn替换匹配样式的文本,返回元组re.escape转义样式中的特殊字符re.purge清除正则表达式的缓存1re模块常用函数目录认识re模块2正则表达式语法3【任务8-4】匹配字符串信息4findall函数返回的是正则表达式在字符串中所有匹配结果的列表。findall函数的语法格式如下。re.findall(pattern,string,flags=0)findall函数的参数及其说明如下表。1.findall函数参数名称参数说明pattern匹配的正则表达式样式,无默认值,类型为字符串型string需要匹配的字符串,无默认值,类型为字符串型flags编译标志,用来修改正则表达式的匹配方法,默认值为0,类型为整型或函数如果正则表达式与字符串匹配成功,那么将会以列表的形式返回字符串中所有与pattern相匹配的字符串。如果匹配失败,那么将会返回一个空列表。示例如下。>>>importre>>>text1='正则表达式一般由一些普通字符和一些元字符组成。'+\...'正则表达式是一种可以用于模式匹配和替换的工具'>>>print(re.findall('正则表达式',text1))#返回一个列表['正则表达式','正则表达式'1.findall函数search函数在整个字符串内对正则表达式进行匹配,找到第一个匹配对象后返回一个包含匹配信息的对象。语法格式如下。re.search(pattern,string,flags=0)search函数的参数说明和findall函数的参数说明相同,如果字符串中没有能够匹配的对象,那么返回None。与findall函数不同的是,search函数并不要求从字符串的开头进行匹配,即正则表达式可以是字符串的一部分。使用search函数匹配“正则表达式”的示例如下。>>>print(re.search('正则表达式',text1))#返回一个匹配对象<re.Matchobject;span=(0,5),match='正则表达式'>2.search函数split函数能够按照匹配的正则表达式将字符串进行分割,并返回分割后的字符串列表。语法格式如下。re.split(pattern,string,maxsplit=0,flags=0)在split函数中,pattern、string和flags的参数说明与findall函数的参数说明相同。相比于findall函数,split函数多了一个maxsplit参数,该参数接收整型数据,表示最大分割次数。3.split函数如果不指定maxsplit参数,那么字符串将被全部分割,该参数默认为0。如果没有可匹配的项,那么将会返回原来的字符串。使用split函数按“。”分割文本的示例如下。>>>p_string=text1.split('。')#按“。”进行分割>>>print(p_string)['正则表达式一般由一些普通字符和一些元字符组成','正则表达式是一种可以用于模式匹配和替换的工具']3.split函数如果sub函数能够找到所有匹配正则表达式的字符串并用指定的字符串进行替换。sub函数的语法格式如下。re.sub(pattern,repl,string,count=0,flags=0)如果字符串string中的内容匹配了正则表达式,那么会将匹配到的字符串替换成repl。sub函数的参数如下。4.sub函数参数名称参数说明pattern匹配的正则表达式样式,无默认值,类型为字符串型repl接收类型为字符串型或函数,若为字符串型,则表示反斜线转义序列被处理;若为函数,则对每个非重复的pattern的情况进行调用,无默认值string需要匹配的字符串,无默认值,类型为字符串型count要替换的最大次数,默认值为0,类型为整型flags编译标志,用来修改正则表达式的匹配方法,默认值为0,类型为整型或函数使用sub函数替换指定文本的示例如下。4.sub函数>>>print(re.sub('正则表达式','123',text1))#文本替换123一般由一些普通字符和一些元字符组成。123是一种可以用于模式匹配和替换的工具1re模块常用函数目录认识re模块2正则表达式语法3【任务8-4】匹配字符串信息4正则表达式通常由一些普通字符和一些元字符组成。普通字符常为大小写字母、数字和中文字符,元字符是具有特殊含义的字符。在之前示例中使用的正则表达式由普通字符组成,因此本小节主要介绍元字符的应用。元字符的应用是使得正则表达式强大的原因之一。元字符由特殊符号组成,定义了字符集合、子组匹配、模式重复次数。元字符通过转义字符和其他符号的组合进行字符匹配,使得正则表达式不仅可以匹配单个字符串,而且可以匹配字符串集合。正则表达式语法英文句号(.)表示匹配除换行符“\n”之外的任意一个字符。使用英文句号进行匹配的示例如下。>>>print(re.findall('正.表达式',text1))['正则表达式','正则表达式']1.字符匹配(1)英文句号方括号([])表示匹配多个字符,在方括号内部的所有字符都会被匹配。使用方括号进行匹配的示例如下。>>>print(re.findall('一[般些]',text1))#匹配方括号内的任意一个字符['一般','一些','一些']1.字符匹配(2)方括号竖线(|)用于对左右两个正则表达式进行匹配。A和B可以是任意正则表达式,扫描目标字符串时,由“|”分隔开的正则表达式样式从左到右进行匹配。当一个样式完全匹配时,这个分支就被接受。也就是说,一旦A匹配成功,B就不再进行匹配。使用竖线进行匹配的示例如下。>>>print(re.findall('正则表|正则表达式',text1))#使用竖线进行匹配['正则表','正则表']1.字符匹配(3)竖线乘方符号(^)表示匹配字符串起始位置的内容,如“^正则”表示匹配所有以“正则”开头的字符串。示例如下。>>>forlineinp_string:...iflen(re.findall('^正则',line)):...print(line)正则表达式一般由一些普通字符和一些元字符组成正则表达式是一种可以用于模式匹配和替换的工具1.字符匹配(4)乘方符号货币符号($)表示匹配字符串结束位置的内容,如“组成$”表示匹配所有以“组成”结尾的字符串。示例如下。>>>forlineinp_string:...iflen(re.findall('组成$',line)):...print(line)正则表达式一般由一些普通字符和一些元字符组成1.字符匹配(5)货币符号常见的量化符号有“?”“*”“+”“{n}”“{n,}”“{m,n}”。英文句号、方括号、竖线、乘方符号和货币符号在面对重复出现的字符时会显得力不从心,而量化符号的使用使得正则表达式更为简洁,如“12333333”可以使用“123+”进行匹配。如下表1.字符匹配(6)量化符号量化符号说

明?表示符号前的元素可选,并且最多匹配1次*表示符号前的元素会被匹配0次或多次+表示符号前的元素会被匹配1次或多次{n}表示符号前的元素会正好被匹配n次{n,}表示符号前的元素至少会被匹配n次{n,m}表示符号前的元素至少被匹配n次,至多被匹配m次1.字符匹配常见量化符号的用法示例如下>>>text2='12,123,1233,12333,123333'>>>print(re.findall('123?',text2))#“3”最多重复1次['12','123','123','123','123’]>>>print(re.findall('123*',text2))#“3”可以重复0次或多次['12','123','1233','12333','123333’]>>>print(re.findall('123+',text2))#“3”可以重复1次或多次['123','1233','12333','123333']1.字符匹配>>>print(re.findall('123{1}',text2))#“3”正好重复1次['123','123','123','123’]>>>print(re.findall('123{2}',text2))#“3”正好重复2次['1233','1233','1233’]>>>print(re.findall('123{1,2}',text2))#“3”至少重复1次,至多重复2次['123','1233','1233','1233']2.转义字符字符串中可以包含任何字符,如果待匹配的字符串中出现“$”“.”“[]”等特殊字符,那么将会与正则表达式的特殊字符发生冲突。遇到这种情况,可以使用转义字符“\”将字符串内的特殊字符进行转义,即“告诉”Python把这个字符当作普通字符处理。如果字符串包含“\”,那么也可以使用“\”将“\”转义。“\”与一些字母组成了Python中的预定义字符。2.转义字符常见的预定义字符及其含义如下表。预定义字符含

义\w匹配数字、字母、下画线\W匹配非数字、非字母、非下画线\s匹配空白字符\S匹配非空白字符\d匹配数字\D匹配非数字\b匹配单词的边界\B匹配非单词的边界在正则表达式中,通常需要用两个反斜线“\\”表示一个反斜线“\”。例如,对于数字“\d”,需要用“\\d”表示。这种操作比较烦琐,而Python中自带的原生字符“r”可以简化操作。对于文本中的“\”,只需要用“r'\'”表示即可,如“\\d”可以写成“r'\d'”。在原生字符的帮助下,正则表达式的书写更加方便。2.转义字符转义字符的使用示例如下。2.转义字符>>>text3='wxid_6cp@16.co'>>>print(re.findall('\\d',text3))#使用转义字符['6','1','6']>>>print(re.findall(r'\d',text3))#使用“r”['6','1','6']>>>print(re.findall(r'\D',text3))#匹配非数字['','w','x','i','d','_','c','p','@','.','c','o']>>>print(re.findall(r'\w',text3))#匹配字、字母、数字['w','x','i','d','_','6','c','p','1','6','c','o']2.转义字符>>>print(re.findall(r'\W',text3))#匹配非数字和非字母['','@','.']>>>print(re.findall(r'\s',text3))#匹配空白字符['']>>>print(re.findall(r'\S',text3))#匹配非空白字符['w','x','i','d','_','6','c','p','@','1','6','.','c','o']>>>print(re.findall(r'\b',text3))#匹配单词的边界['','','','','','']>>>print(re.findall(r'\B',

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论