Python语言正则表达式课件.pptx

上传人:飞****2 文档编号:73607398 上传时间:2023-02-20 格式:PPTX 页数:51 大小:1.10MB
返回 下载 相关 举报
Python语言正则表达式课件.pptx_第1页
第1页 / 共51页
Python语言正则表达式课件.pptx_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《Python语言正则表达式课件.pptx》由会员分享,可在线阅读,更多相关《Python语言正则表达式课件.pptx(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第五章字符串与正则表达式5.1字符串基础5.2字符串方法5.3正则表达式习题5.4实验5.5小结字符串常用的表示方式1、字符串中的字符可以是ASCII字符也可以是其他各种符号。2、它常用英文状态下的单引号()、双引号(”)或者三单引号()、三双引号(”)进行表示。5.1字符串基础第五章字符串与正则表达式转义字符字符串中还有一种特殊的字符叫做转义字符,转义字符通常用于不能够直接输入的各种特殊字符。Python常用转义字符如表5.1所示:5.1字符串基础第五章字符串与正则表达式转义字符说明反斜线单引号双引号a响铃符b退格符f换页符n换行符r回车符t水平制表符v垂直制表符0Null,空字符串000以

2、八进制表示的ASCII码对应符xhh以十六进制表示的ASCII码对应符表5.1用的转义字符字符串的基础操作包括。求字符串的长度、字符串的连接、字符串的遍历、字符串的包含判断、字符串的索引和切片等。第五章字符串与正则表达式1、求字符串的长度字符串的长度是指字符数组的长度,又可以理解为字符串中的字符个数(空格也算字符),可以用len()函数查看字符串的长度。如:sample_str1=JacklovesPythonprint(len(sample_str1)#查看字符串长度运行结果如下:175.1字符串基础2、字符串的连接第五章字符串与正则表达式字符串的连接是指将多个字符串连接在一起组成一个新的字

3、符串。例如:sample_str2=Jack,is,a,Python,fan#字符串用逗号隔开,组成元组print(sample_str2:,sample_str2,type(sample_str2)运行结果如下:sample_str2:(Jack,is,a,Python,fan)当字符串之间没有任何连接符时,这些字符串会直接连接在一起,组成新的字符串。sample_str3=JackisaPythonfan#字符串间无连接符,默认合并print(sample_str3:,sample_str3)运行结果如下:sample_str3:JackisaPythonfan5.1字符串基础第五章字符串

4、与正则表达式字符串之间用+号连接时,也会出现同样的效果,这些字符串将连接在一起,组成一个新的字符串。sample_str4=Jack+is+a+Python+fan#字符串+连接,默认合并print(sample_str4:,sample_str4)运行结果如下:sample_str4:JackisaPythonfan用字符串与正整数进行乘法运算时,相当于创建对应次数的字符串,最后组成一个新的字符串。sample_str5=Jack*3#重复创建相应的字符串print(sample_str5:,sample_str5)运行结果如下:sample_str5:JackJackJack注意:字符串直

5、接以空格隔开的时候,该字符串会组成元组类型。5.1字符串基础3、字符串的遍历第五章字符串与正则表达式通常使用for循环对字符串进行遍历。例如:sample_str6=Python#遍历字符串forainsample_str6:print(a)运行结果如下:Python其中变量a,每次循环按顺序代指字符串里面的一个字符。5.1字符串基础4、字符串的包含判断第五章字符串与正则表达式字符串是字符的有序集合,因此用in操作来判断指定的字符是否存在包含关系。如:sample_str7=Pythonprint(ainsample_str7)#字符串中不存在包含关系print(Pyinsample_str7

6、)#字符串中存在包含关系运行结果如下:FalseTrue5.1字符串基础5、索引和切片第五章字符串与正则表达式字符串是一个有序集合,因此可以通过偏移量实现索引和切片的操作。在字符串中字符从左到右的字符索引依次为0,1,2,3,。,len()-1,字符从右到左的索引依次为-1,-2,-3,。,-len()。索引其实简单来说是指字符串的排列顺序,可以通过索引来查找该顺序上的字符。例如:sample_str8=Pythonprint(sample_str80)#字符串对应的第一个字符print(sample_str81)#字符串对应的第二个字符print(sample_str8-1)#字符串对应的最

7、后一个字符print(sample_str8-2)#字符串对应的倒数第二个字符运行结果如下:Pyno5.1字符串基础第五章字符串与正则表达式注意:虽然索引可以获得该顺序上的字符,但是不能够通过该索引去修改对应的字符。例如:sample_str80=b#修改字符串的第一个字符Traceback(mostrecentcalllast):#系统正常报错File,line9,insample_str80=bTypeError:strobjectdoesnotsupportitemassignment切片,也叫分片,和元组与列表相似,是指从某一个索引范围中获取连续的多个字符(又称为子字符)。常用格式如下

8、:stringnamestart:end这里的stringname是指被切片的字符串,start和end分别指开始和结束时字符的索引,其中切片的最后一个字符的索引是end-1,这里有一个诀窍叫:包左不包右。例如:sample_str9=abcdefghijklprint(sample_str90:4)#获取索引为0-4之间的字符串,从索引0开始到3为止,不包括索引为4的字符运行结果如下:abcd5.1字符串基础第五章字符串与正则表达式若不指定起始切片的索引位置,默认是从0开始;若不指定结束切片的顺序,默认是字符串的长度-1。例如:sample_str10=abcdefgprint(起始不指定,

9、sample_str10:3)#获取索引为0-3之间的字符串,不包括3print(结束不指定,sample_str103:)#从索引3到最后一个字符,不包括len运行结果如下:起始不指定abc结束不指定defg默认切片的字符串是连续的,但是也可以通过指定步进数(step)来跳过中间的字符,其中默认的step是1。例如指定步进数为2:sample_str11=012345678print(跳2个字符,sample_str111:7:2)#索引17,每2个字符截取运行结果如下:跳2个字符1355.1字符串基础字符串格式化方法第五章字符串与正则表达式想要进行字符串格式化可以使用format()方法。

10、例如:print(Mynameis0,andIam1.format(Jack,9)#函数格式化运行结果如下:MynameisJack,andIam95.1字符串基础字符串常见的格式化符号如表5.2第五章字符串与正则表达式格式控制符说明%s字符串(采用str()的显示)或其他任何对象%r与%s相似(采用repr()的显示)%c单个字符%b参数转换成二进制整数%d参数转换成十进制整数%i参数转换成十进制整数%o参数转换成八进制整数%u参数转换成十进制整数%x参数转换成十六进制整数,字母小写%X参数转换成十六进制整数,字母大写%eE按科学计数法格式转换成浮点数%fF按定点小数格式转换成浮点数%gG按

11、定点小数格式转换成浮点数,与%fF不同表5.2Python格式控制符号5.1字符串基础字符串的格式化通常有两种方式,除了之前提到的用函数的形式进行格式化以外,还可以用字符串格式化表达式来进行格式,常用%进行表示,其中%前面是需要格式化的字符串,而%后面就是需要填充的实际参数,这个实际参数其本质就是元组。%也可以理解为占位符。例如:第五章字符串与正则表达式print(Mynameis%s,andIam%d%(Jack,9)#表达式格式化运行结果如下:MynameisJack,andIam9注意:如果想要将后面填充的浮点数保留两位小数,可以用%f2表示,同时会对第三位小数进行四舍五入。例如:pri

12、nt(你花了%.2f元钱%(20.45978)#浮点数保留两个小数运行结果如下:你花了20.46元钱5.1字符串基础字符串的格式化通常有两种方式,除了之前提到的用函数的形式进行格式化以外,还可以用字符串格式化表达式来进行格式,常用%进行表示,其中%前面是需要格式化的字符串,而%后面就是需要填充的实际参数,这个实际参数其本质就是元组。%也可以理解为占位符。例如:第五章字符串与正则表达式print(Mynameis%s,andIam%d%(Jack,9)#表达式格式化运行结果如下:MynameisJack,andIam9注意:如果想要将后面填充的浮点数保留两位小数,可以用%f2表示,同时会对第三位

13、小数进行四舍五入。例如:print(你花了%.2f元钱%(20.45978)#浮点数保留两个小数运行结果如下:你花了20.46元钱5.1字符串基础第五章字符串与正则表达式5.1字符串基础5.2字符串方法5.3正则表达式习题5.4实验5.5小结字符串是str类型对象,所以Python内置了一系列操作字符串的方法。其中常用的方法如下:1str.strip(chars)若方法里面的chars不指定默认去掉字符串的首、尾空格或者换行符,但是如果指定了chars,那么会删除首尾的chars例如:sample_fun1=Helloworld#print(sample_fun1.strip()#默认去掉首尾

14、空格print(sample_fun1.strip(#)#指定首尾需要删除的字符print(sample_fun1.strip(#)运行结果如下:Helloworld#HelloworldHelloworld5.2字符串方法第五章字符串与正则表达式2str.count(chars,start,end)统计chars字符串或者字符在str中出现的次数,从start顺序开始查找一直到end顺序范围结束,默认是从顺序0开始。例如:sample_fun2=abcdabfabbcdprint(sample_fun2.count(ab,2,9)#统计字符串出现的次数运行结果如下:25.2字符串方法第五章字

15、符串与正则表达式3str.capitalize()将字符串的首字母大写。例如:sample_fun3=abcprint(sample_fun3.capitalize()#首字母大写运行结果如下:Abc4str.replace(oldstr,newstr,count)用旧的子字符串替换新的子字符串,若不指定count默认全部替换。例如:sample_fun4=ab12cd3412cdprint(sample_fun4.replace(12,21)#不指定替换次数countprint(sample_fun4.replace(12,21,1)#指定替换次数count运行结果如下:ab21cd3421

16、cdab21cd3412cd5.2字符串方法第五章字符串与正则表达式5str.find(str,start,end)查找并返回子字符在start到end范围内的顺序,默认范围是从父字符串的头开始到尾结束,例如:sample_fun5=0123156print(sample_fun5.find(5)#查看子字符串的顺序print(sample_fun5.find(5,1,4)#指定范围内没有该字符串默认返回-1print(sample_fun5.find(1)#多个字符串返回第一次出现时候的顺序运行结果如下:5-115.2字符串方法第五章字符串与正则表达式6str.index(str,start

17、,end)该函数与find函数一样,但是如果在某一个范围内没有找到该字符串的时候,不再返回-1而是直接报错。例如:sample_fun6=0123156print(sample_fun6.index(7)#指定范围内没有找到该字符串会报错运行结果如下:Traceback(mostrecentcalllast):FileD:/python/space/demo05-02-03.py,line2,inprint(sample_fun6.index(7)#指定范围内没有找到该字符串会报错TypeError:mustbestr,notint5.2字符串方法第五章字符串与正则表达式7str.isalnu

18、m()字符串是由字母或数字组成则返回true否则返回false。例如:sample_fun7=abc123#字符串由字母和数字组成sample_fun8=abc#字符串由字母组成sample_fun9=123#字符串由数字组成sample_fun10=abc12%#字符串由除了数字字母以为的字符组成print(sample_fun7.isalnum()print(sample_fun8.isalnum()print(sample_fun9.isalnum()print(sample_fun10.isalnum()运行结果如下:TrueTrueTrueFalse5.2字符串方法第五章字符串与正则

19、表达式8str.isalpha()字符串是否全是由字母组成的,是返回true,否则返回false。例如sample_fun11=abc123#字符串中不只是有字母sample_fun12=abc#字符串中只是有字母print(sample_fun11.isalpha()print(sample_fun12.isalpha()运行结果如下:FalseTrue5.2字符串方法第五章字符串与正则表达式9str.isdigit()字符串是否全是由数字组成,是则返回true,否则返回false。例如:sample_fun13=abc12#字符串中不只是有数字sample_fun14=12#字符串中只是有

20、数字print(sample_fun13.isdigit()print(sample_fun14.isdigit()运行结果如下:FalseTrue5.2字符串方法第五章字符串与正则表达式10str.isspace()字符串是否全是由空格组成的,是则返回true,否则返回false。例如:sample_fun15=abc#字符串中不只有空格sample_fun16=#字符串中只有空格print(sample_fun15.isspace()print(sample_fun16.isspace()运行结果如下:FalseTrue5.2字符串方法第五章字符串与正则表达式11str.islower()

21、字符串是否全是小写,是则返回true,否则返回false。例如:sample_fun17=abc#字符串中的字母全是小写sample_fun18=Abcd#字符串中的字母不只有小写print(sample_fun17.islower()print(sample_fun18.islower()运行结果如下:TrueFalse5.2字符串方法第五章字符串与正则表达式12str.isupper()字符串是否全是大写,是则返回true,否则返回false。例如:sample_fun19=abCa#字符串中的字母不全是大写字母sample_fun20=ABCA#字符串中的字母全是大写字母print(sa

22、mple_fun19.isupper()print(sample_fun20.isupper()运行结果如下:FalseTrue5.2字符串方法第五章字符串与正则表达式13str.istitle()字符串首字母是否是大写,是则返回true,否则返回false。例如:sample_fun21=Abc#字符串首字母大写sample_fun22=aAbc#字符串首字母不是大写print(sample_fun21s.istitle()print(sample_fun22.istitle()运行结果如下:TrueFalse5.2字符串方法第五章字符串与正则表达式14str.low()将字符串中的字母全部

23、转换成小写字母。例如:sample_fun23=aAbB#将字符串中的字母全部转为小写字母print(sample_fun23.lower()运行结果如下:aabb15str.upper()将字符串中的字母全部转换成大写字母。例如:sample_fun24=abcD#将字符串中的字母全部转为print(sample_fun24.upper()运行结果如下:ABCD5.2字符串方法第五章字符串与正则表达式16str.split(sep,maxsplit)将字符串按照指定的sep字符进行分割,maxsplit是指定需要分割的次数,若不指定sep默认是分割空格。例如:sample_fun25=aba

24、cdaefprint(sample_fun25.split(a)#指定分割字符串print(sample_fun25.split()#不指定分割字符串print(sample_fun25.split(a,1)#指定分割次数运行结果如下:,b,cd,efabacdaef,bacdaef5.2字符串方法第五章字符串与正则表达式17str.startswith(sub,start,end)判断字符串在指定范围内是否以sub开头,默认范围是整个字符串。例如:sample_fun26=12abcdefprint(sample_fun26.startswith(12,0,5)#范围内是否是以该字符开头运行

25、结果如下:True18str.endswith(sub,start,end)判断字符串在指定范围内是否是以sub结尾,默认范围是整个字符串。例如:sample_fun27=abcdef12print(sample_fun27.endswith(12)#指定范围内是否是以该字符结尾运行结果如下:True5.2字符串方法第五章字符串与正则表达式19str.partition(sep)将字符串从sep第一次出现的位置开始分隔成三部分:sep顺序前、sep、sep顺序后。最后会返回出一个三元数组,如果没有找到sep的时候,返回字符本身和两个空格组成的三元数组。例如:sample_fun28=12345

26、6print(sample_fun28.partition(34)#指定字符分割,能够找到该字符print(sample_fun28.partition(78)#指定字符分割,不能够找到该字符运行结果如下:(12,34,56)(123456,)5.2字符串方法第五章字符串与正则表达式20str.rpartition(sep)该函数与partition(sep)函数一致,但是sep不再是第一次出现的顺序,而是最后一次出现的顺序。例如:sample_fun29=12345634print(sample_fun29.rpartition(34)#指定字符最后一次的位置进行分割运行结果如下:(1234

27、56,34,)5.2字符串方法第五章字符串与正则表达式第五章字符串与正则表达式5.1字符串基础5.2字符串方法5.3正则表达式习题5.4实验5.5小结5.3.1认识正则表达式正则表达式(RegularExpression),此处的“Regular”即是“规则”、“规律”的意思,RegularExpression即“描述某种规则的表达式”,因此它又可称为正规表示式、正规表示法、正规表达式、规则表达式、常规表示法等,在代码中常常被简写为regex、regexp或RE。正则表达式使用某些单个字符串,来描述或匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索或替换那些符合某个模式的

28、文本,如下面的表5.3、5.4、5.5、5.6所示。5.3正则表达式第五章字符串与正则表达式字符说明.匹配任意1个字符(除了n)匹配中列举的字符dd匹配数字,即0-9D匹配非数字,即不是数字s匹配空白,即空格,Tab键S匹配非空白w匹配单词字符,即a-zA-Z0-9_W匹配非单词字符表5.3单个字符匹配5.3.1认识正则表达式5.3正则表达式第五章字符串与正则表达式字符说明*匹配前个字符出现0次或者无限次,即可有可无+匹配前个字符出现1次或者无限次,即至少有1次?匹配前个字符出现1次或者0次,即要么有1次,要么没有m匹配前个字符出现m次m,匹配前个字符至少出现m次m,n匹配前个字符出现从m到n

29、次字符说明匹配字符串开头$匹配字符串结尾b匹配个单词的边界B匹配非单词边界表5.4表示数量的匹配表5.5表示边界的匹配5.3.1认识正则表达式5.3正则表达式第五章字符串与正则表达式字符说明|匹配左右任意个表达式(ab)将括号中字符作为个分组num引用分组num匹配到的字符串(?P)分组起别名(?P=name)引用别名为name分组匹配到的字符串表5.6匹配分组5.3.2re模块在Python中需要通过正则表达式对字符串进行匹配的时候,可以导入个库(模块),名字为re,它提供了对正则表达式操作所需的方法,如表5.7。5.3正则表达式第五章字符串与正则表达式方法说明re.match(patter

30、n,stringflags)从字符串的开始匹配一个匹配对象,例如匹配第一个单词re.search(pattern,stringflags)在字符串中查找匹配的对象,找到第一个后就返回,如果没有找到就返回Nonere.sub(pattern,repl,stringcount)替换掉字符中的匹配项re.split(r,text)分割字符re.findall(pattern,stringflags)获取字符串中所有匹配的对象pile(pattern,flags)创建模式对象表5.7re模块常见的方法5.3.3re.match()方法re.match()是用来进行正则匹配检查的方法,若字符串匹配正则表

31、达式,则match()方法返回匹配对象(MatchObject),否则返回None(注意不是空字符串)。匹配对象MacthObject具有group()方法,用来返回字符串的匹配部分。常用格式为:re.match(pattern,string,flags=0)这里的pattern格式为(正则表达式,匹配的字符串)例如:importre#导入re包sample_result1=re.match(Python,Python12)#从头查找匹配字符串print(sample_result1.group()#输出匹配的字符串运行结果如下:Python5.3正则表达式第五章字符串与正则表达式5.3.4r

32、e.search()方法re.search()方法和re.match()方法相似,也是用来对正则匹配检查的方法但不同的是search()方法是在字符串的头开始一直到尾进行查找,若正则表达式与字符串匹配成功,那么就返回匹配对象,否则返回None。例如:importresample_result2=re.search(Python,354Python12)#依次匹配字符串print(sample_result2.group()运行结果如下:Python5.3正则表达式第五章字符串与正则表达式虽然re.match()和re.search()方法都是指定的正则表达式与字符串进行匹配,但是re.matc

33、h()是从字符串的开始位置进行匹配,若匹配成功,则返回匹配对象,否则返回None。而re.search()方法却是从字符串的全局进行扫描,若匹配成功就返回匹配对象,否则返回None。例如:importresample_result3=re.match(abc,abcdef1234)#match只能够匹配头sample_result4=re.match(1234,abcdef1234)print(sample_result3.group()print(sample_result4)5.3正则表达式第五章字符串与正则表达式5.3.4re.search()方法与re.match()方法的区别samp

34、le_result5=re.search(abc,abcdef1234)#search匹配全体字符sample_result6=re.search(1234,abcdef1234)print(sample_result5.group()print(sample_result6.group()运行结果如下:abcNoneabc12345.3正则表达式第五章字符串与正则表达式5.3.4re.search()方法与re.match()方法的区别第五章字符串与正则表达式5.1字符串基础5.2字符串方法5.3正则表达式习题5.4实验5.5小结1我们常看到自己电脑上的文件路径如C:WindowsLogsd

35、osvc,请将该路径分割为不同的文件夹。sample_str1=C:WindowsLogsdosvcsample_slipstr=sample_str1.split()#转义字符要转一次才是本意print(sample_slipstr)运行结果如下:C:,Windows,Logs,dosvc2Python的官网是https:/www.python.org判断该网址是否是以org结尾。sample_str2=https:/www.python.orgprint(sample_str2.endswith(org)#从字符串末尾开始查找运行结果如下:True5.4实验第五章字符串与正则表达式5.4.

36、1使用字符串处理函数写出一个正则表达式来匹配是否是手机号。importre#定义一个正则表达式phone_rule=pile(1d10)phone_num=input(请输入一个手机号)#通过规则去匹配字符串sample_result3=phone_rule.search(phone_num)ifsample_result3!=None:print(这是一个手机号)else:print(这不是一个手机号)运行结果如下:请输入一个手机号12312345678这是一个手机号Processfinishedwithexitcode0请输入一个手机号24781131451这不是一个手机号Processf

37、inishedwithexitcode05.4实验第五章字符串与正则表达式5.4.2正则表达式的使用用两种方式写出一个正则表达式匹配字符Python123中的Python并输出字符串Python。importre#导入re包sample_regu=pile(Python)#定义正则表达式规则sample_result4=sample_regu.match(Python123)#用match方式匹配字符串print(sample_result4.group()#用search方式匹配字符串sample_result5=sample_regu.search(Python123)print(samp

38、le_result5.group()5.4实验第五章字符串与正则表达式5.4.3使用re模块第五章字符串与正则表达式5.1字符串基础5.2字符串方法5.3正则表达式习题5.4实验5.5小结本章首先讲解了Python字符串概念,字符串的基本操作;其次是字符串的格式化,主要的格式化符号、格式化元组;还有操作字符串的基本方法,这些符号和方法在Python的开发中会被经常使用到。之后,我们学习了正则表达式,re模块和正则表达式的基本表示符号,这些符号可以帮助简化正则表达式。正则表达式的用途非常广泛,几乎任何编程语言都可以使用到它,所以学好正则表达式,对于提高自己的编程能力有非常重要的作用。5.5小结第五章字符串与正则表达式第五章字符串与正则表达式5.1字符串基础5.2字符串方法5.3正则表达式习题5.4实验5.5小结1.将字符串abcdefg使用函数的方式进行倒叙输出。2.在我们生活中节假日的问候是必不可少的,请使用字符串格式化的方式写一个新年问候语模板。3.写出能够匹配163邮箱()的正则表达式。4.简述re模块中re.match()与re.search()的区别。习题:感谢聆听

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com