版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
正则表达式
学习目标1、正则表达式语法2、使用re模块实现正则表达式的操作1、正则表达式语法在处理字符串时,经常会涉及查找符合某些规则的字符串。正则表达式就是用于描述这些规则的工具,换言之,正则表达式就是记录文本规则的代码。您可能使用?和*通配符来查找硬盘上的文件。?通配符匹配文件名中的0个或1个字符,比如可以通过abc?.exe来查找当前文件夹中文件名为abc.exe、abcd.exe、abc1.exe等一系列的文件。而*通配符匹配零个或多个字符。可以通过*.txt来查找当前文件夹中所有的文本文件。这里的abc?.exe、*.txt可以被理解为简单的正则表达式。1、正则表达式语法13.1.1元字符元字符是一种用于描述其它字符的特殊字符,它由基本元字符和普通字符两部分组成。基本元字符是构成元字符的元素之一。普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。13.1.2限定符限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{m}或{m,}或{m,n}共6种。13.1.3范围字符1、正则表达式语法13.1.5选择字符试想一下,如何匹配手机号码?手机号都为11位,且以1开头,第二位一般为3、5、6、7、8、9,剩下八位任意数字。第二位数字包含着条件选择的逻辑,这就需要使用选择符(|)来实现。该字符可以理解为“或”,匹配手机号的表达式可以写成如下方式:1(3|4|5|6|7|8|9)\d{9}$国内固定电话区号3~4位,号码7~8位。例如021-87654321,可以用如下表达式来匹配:\d{3}-\d{8}$|\d{4}-\d{7}$1、正则表达式语法13.1.6转义字符(r和\)Python中字符串前面加上r表示原生字符串(rawstring),与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。13.1.7分组通过13.1.5节中的例子,大家对小括号的作用有了一定的了解。小括号字符的第一个作用就是可以改变限定符的作用范围,如“|”“*”“^”等。例如:(Fri|Thurs)day这个表达式是匹配Friday或Thursday,如果不使用小括号,那么就变成了匹配单词Fri或Thursday了。正则表达式是一个特殊的字符序列,能方便地检查一个字符串是否与某种模式匹配。学会使用Python自带的re模块编程非常有用,因为它可以帮我们快速检查一个用户输入的email或电话号码格式是否有效,也可以帮我们快速从文本中提取需要的字符串。本节我们就来学习如何编写Python正则表达式,并利用re模块自带的方法来判断字符串的匹配并从目标字符串提取我们想要的内容。2、使用re模块实现正则表达式的操作在使用re模块时,需要先应用import语句将其引入,具体代码如下:importrere模块主要包含如下6种方法:pile:编译一个正则表达式模式(pattern)re.match:从头开始匹配,使用group()方法可以获取第一个匹配值re.search:用包含方式匹配,使用group()方法可以获取第一个匹配值re.findall:用包含方式匹配,把所有匹配到的字符(多个匹配值)放到以列表中返回re.sub:匹配字符并替换re.split:以匹配到的字符当作列表分隔符,返回列表2、使用re模块实现正则表达式的操作13.2.1分组匹配1.pile方法compile函数用于编译正则表达式,生成一个正则表达式(pattern)对象,供match()和search()这两个函数使用。其函数包含两个参数,一个pattern,一个可选参数flags。pile(pattern[,flags])参数:pattern:一个字符串形式的正则表达式flags:可选,表示匹配模式,比如忽略大小写,多行模式等。2.re.match和re.search方法re.match和re.search方法类似,唯一不同的是re.match从头匹配,re.search可以从字符串中任一位置匹配。如果有匹配对象match返回,可以使用match.group()提取匹配字符串。re.match(pattern,string[,flags])patter:表示模式字符串,由要匹配的正则表达式转换而来。string:表示要匹配的字符串。flags:可选参数,表示标志位,用于控制匹配方式,常用的标志及其说明如表13.3所示。下同re.search(pattern,string[,flags])3.re.findall方法前面我们已经提到过,当您试图从一个字符串中提取所有符合正则表达式的字符串列表时需要使用re.findall方法。findall方法使用方法有两种,一种是pattern.findall(string),另一种是re.findall(pattern,string)。re.findall方法经常用于从爬虫爬来的文本中提取有用信息。findall函数返回的总是正则表达式在字符串中所有匹配结果的列表。pattern匹配模式,由pile获得string需要匹配的字符串13.2.2替换字符串re.sub方法用于替换字符串中的匹配项。其语法格式如下:re.sub(pattern,repl,string,count=0,flags=0)参数说明如下:pattern:表示模式字符串,由要匹配的正则表达式转换而来。repl:表示替换的字符串,也可为一个函数。string:表示要被查找替换的原始字符串。count:可选参数,表示模式匹配后替换的最大次数,默认0表示替换所有的匹配。flags:可选参数,表示标志位,用于控制匹配的方式,如是否区分字母大小写。13.2.3使用正则表达式分割字符串re.split方法用于实现根据正则表达式分割字符串,并返回分割后的字符串列表。其语法格式如下:re.split(pattern,string,[maxsplit],[flags])参数说明如下:pattern:相当于str.split()中的sep,分隔符的意思,不但可以是字符串,也可以是正则表达式。string
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 少儿感统触觉刺激训练合同
- 上班族减脂餐包月上门配送合同协议
- PDCA优化STEMI急诊流程
- 2025年云南玉溪红塔区聂耳文化演艺有限公司招聘真题
- 禹城社区工作者招考真题及答案2025
- 2025年青山湖区住房和城乡建设局下属事业单位招聘真题
- 2025年毕节市威宁自治县发展和改革局招聘城镇公益性岗位人员真题
- 2026年常州市法院书记员招聘考试备考试题及答案详解
- 2026年度春季丹巴县美学文化传媒有限公司招聘5人考试备考试题及答案解析
- 2026贵州瓮安县县级公立医院招聘编制外专业技术人员88人考试模拟试题及答案解析
- 2024-2030年中国低膨胀合金市场产销需求与竞争前景分析研究报告
- 药物警戒管理体系记录与数据管理规程
- 中国法律史-第一次平时作业-国开-参考资料
- 高中物理选择性必修1教材习题答案
- 《微生物病原体课件》
- 重庆市渝中区2022-2023学年四年级下学期期末数学试卷
- 铁路救援起复索具使用指南
- 实验五-眼图仿真实验课件
- DB37T 1933-2022氯碱安全生产技术规范
- GB/T 24923-2010普通型阀门电动装置技术条件
- GB/T 20319-2017风力发电机组验收规范
评论
0/150
提交评论