下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
厦门大学林子雨编著《Python程序设计基础教程(微课版)》教材配套实验指南第13章正则表达式 主讲教师:林子雨/linziyu第1页厦门大学林子雨编著《Python程序设计基础教程(微课版)》教材习题题目第13章正则表达式一、简答题1.正则表达式中的运算符有哪些?2.有如下正则表达式:re.search("\\\\\\]",r"在正则表达式中,!\][都是特殊字符")其中,模式字符串里每一个反斜杠的作用是什么?3.解读如下正则表达式:1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}4.对下面的正则表达式进行修改,使其匹配不出任何结果:re.search(r"(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)","<some_email@")5.在多行模式下,如何修改正则表达式,才能让search函数与fullmatch函数返回相同的操作结果?6.书写正则表达式,匹配一个URL。7.书写一个正则表达式,匹配一个日期。8.书写一个正则表达式,匹配一个IP地址。9.书写一个正则表达式,匹配一个闰年。10.书写一个正则表达式,匹配一个带国际区号的手机号码。二、编程题1.现有一个长字符串:厦门市 361000 0592思明区 361000 0592湖里区 361000 0592同安区 361100 0592将其转换为一个如下格式:{{city:“厦门市”,zip:“361000”,cityCode:“0592”},…}2.使用正则表达式,简要模拟scanf的操作过程。函数原型是:scanf(template,sourceString),其中,template是指包含%d和%s的简单模式字符串读取sourceString中的内容。可以使用“%d”读取数字,可以使用“%s”读取字符串。返回的是所有%d和%s对应内容的元组。3.将以下内容生成一条通讯录的记录,记录的具体格式可以自由设计:BEGIN:VCARDVERSION:3.0N:张三ORG:某公司TITLE:某职位ADR:某地址TELND:VCARD一、简答题1.正则表达式中的运算符有哪些?【参考答案】search,match,fullmatch,finditer,findall2.有如下正则表达式:re.search("\\\\\\]",r"在正则表达式中,!\][都是特殊字符")其中,模式字符串里每一个反斜杠的作用是什么?【参考答案】“\\\\\\]“里,将其转换为原始字符串是r“\\\]”。所以,第1,3,5个反斜杠都是字符串的转义字符。在模式字符串里,由于“\”和]”都是特殊字符,所以2,6个是正则表达式的转义字符。最后一个表达的是字符本身的含义“\”。3.解读如下正则表达式:1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}【参考答案】以1开头,随后是两位数字,满足:当两位中的第一位是3,第二位是任意数字,或第一位是4,第二位是01456789之中任意一个,或第一位是5,第二位是除4以外任意数字,或第一位是6,第二位是2567中任意一个,或第一位是7,第二位是0到8中任意一个,或第一位是9,第二位是除4以外任意一个,随后是8位任意数字。4.对下面的正则表达式进行修改,使其匹配不出任何结果:re.search(r"(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)","<some_email@")【参考答案】re.fullmatch(r"(<)?(?(1)(\w+@\w+(?:\.\w+)+>$)|(\w+@\w+(?:\.\w+)+$))","some_email@")5.在多行模式下,如何修改正则表达式,才能让search函数与fullmatch函数返回相同的操作结果?【参考答案】应当加入断言(?<!\n)^6.书写正则表达式,匹配一个URL。【参考答案】re.search(r"(www\.)?(\w+\.){1,}(\w+$)","")7.书写一个正则表达式,匹配一个日期。【参考答案】re.search(r"[0-9]{4}(年|\.|\\|-)[0-9]{1,2}(月|\.|\\|-)[0-9]{1,2}(日)?","2021年3月6日")8.书写一个正则表达式,匹配一个IP地址。【参考答案】re.search(r"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}","")9.书写一个正则表达式,匹配一个闰年。【参考答案】re.search(r"(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(年|\.|\\|-)(((0[13578]|1[02])(月|\.|\\|-)(0[1-9]|[12][0-9]|3[01])(日)?)|((0[469]|11)(月|\.|\\|-)(0[1-9]|[12][0-9]|30)(日)?)|(02(月|\.|\\|-)(0[1-9]|[1][0-9]|2[0-8])(日)?)))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))(年|\.|\\|-)02(月|\.|\\|-)29(日)?)","2020年02月29日")10.书写一个正则表达式,匹配一个带国际区号的手机号码。【参考答案】re.search(r"\+[0-9]{1,3}[0-9]{11}","+8613322223333")二、编程题1.现有一个长字符串:厦门市 361000 0592思明区 361000 0592湖里区 361000 0592同安区 361100 0592将其转换为一个如下格式:{{city:“厦门市”,zip:“361000”,cityCode:“0592”},…}【参考答案】importresrc='''厦门市 361000 0592思明区 361000 0592湖里区 361000 0592同安区 361100 0592'''result="{\n"forminre.finditer("(?P<g0>\D{3}) (?P<g1>[0-9]{6}) (?P<g2>[0-9]{4})",src):#print(m.group("g0"))#print(m.group("g1"))#print(m.group("g2"))#print("")result+="\t{city:\""+m.group("g0")+"\",zip:\""+m.group("g1")+"\",cityCode:\""+m.group("g2")+"\"},\n"result+="}"print(result)2.使用正则表达式,简要模拟scanf的操作过程。函数原型是:scanf(template,sourceString),其中,template是指包含%d和%s的简单模式字符串读取sourceString中的内容。可以使用“%d”读取数字,可以使用“%s”读取字符串。返回的是所有%d和%s对应内容的元组。【参考答案】defscanf(template,sourceString):importreregexStr=""strNum=0intNum=0printSec=[]forminre.finditer(r"(?P<g0>%[sS])|(?P<g1>%[dD])",template):ifm.group("g0")!=None:regexStr+="(?P<str"+str(strNum)+">\w{1,})\W{0,}"printSec.append("str"+str(strNum))strNum+=1ifm.group("g1")!=None:regexStr+="(?P<int"+str(intNum)+">[0-9]{1,})\W{0,}"printSec.append("int"+str(intNum))intNum+=1regex=pile(regexStr)match=regex.search(sourceString)forgroupNameinprintSec:print(groupName+":"+match.group(groupName))returnmatchscanf("%s%d%S%d","Python387Python387")3.将以下内容生成一条通讯录的记录,记录的具体格式可以自由设计:BEGIN:VCARDVERSION:3.0N:张三ORG:某公司TITLE:某职位ADR:某地址TELND:VCARD【参考答案】importresrc='''BEGIN:VCARDVERSION:3.0N:张三ORG:某公司TITLE:某职位ADR:某地址TELND:VCARD'''regex=pile(r"BEGIN:(?P<begin>\w{1,})\W{0,}VERSION:(?P<version>[0-9].[0-9])\W{0,}N:(?P<n>\w{1,})\W{0,}ORG:(?P<org>\w{1,})\W{0,}TITLE:(?P<title>\w{1,})\W{0,}ADR:(?P<adr>\w{1,})\W{0,}TEL:(?P<tel>[0-9]{11})\W{0,}END:(?P<end>\w{1,})\W{0,}")match=regex.search(src)print("#++"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国超透明屏幕保护膜市场数据研究及竞争策略分析报告
- 2026年中国超融合产品市场数据研究及竞争策略分析报告
- 2026年中国超脉冲铥光纤激光系统市场数据研究及竞争策略分析报告
- 2026年全县化妆品经营监管知识问答
- 2026年技工院校学生学籍管理规定及毕业证书验印要求试题
- 2026年-narcotics-麻醉剂滥用与防控试题及答案
- 2026年电工作业人员持证上岗安全技术知识测试
- 2026年军营超市店长面试纪律要求题
- 2026年开关插座维修工面试题库
- 2026年文化馆音乐岗位招聘考试音乐艺术与其它艺术融合题
- 酒店餐饮管理第二版马开良课后部分参考答案
- 小学英语-Robin'play教学课件设计
- 简易呼吸器操作流程及考核评分表
- 水泥有限公司特种设备管理制度
- 【高中物理】曲线运动 说课课件 2022-2023学年高一下学期物理人教版(2019)必修第二册
- 浙教版八年级下册数学第三章数据分析初步单元检测卷(Word版 无答案)
- NY/T 298-1995有机肥料全磷的测定
- GB/T 701-2008低碳钢热轧圆盘条
- GA/T 1556-2019道路交通执法人体血液采集技术规范
- 山东省建筑施工现场安全管理资料规程表格
- Q∕SY 01128-2020 录井资料采集处理解释规范
评论
0/150
提交评论