- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;正则表达式通常被用来检索、替换那些匹配某个模式的文本,如查找和提取某个网页中所有的Email或者电话号码、网址等。
Python中正则表达式的模块为re,用importre导入。它是一种用来匹配字符串的强有力武器。其设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为它“匹配”上了,否则该字符串就不合规。
如在网上填表时,经常需要填写手机号码,当只有输入正确的格式时才被接收,如第一位是1,总共11位数字,这就是用正则表达式去匹配数字。;9.1元字符
在python的正则模块里,一个数字可以用“\d”匹配;一个既可以是字母又可以是数字,则可以用“\w”匹配,如身份证的最后一位;“.”可以匹配任意字符。
先来看看如下的匹配模式。
00\d:可以匹配007,但无法匹配00A,也就是说’00’后面只能是数字;
\d\d\d:可以匹配010,只可匹配三位数字;
\w\w\d:可以匹配py3,前两位可以是数字或字母,但是第三位只能是数字,如a12、3a1、223,但不可以匹配y1w或者27f。
py.:可以匹配pyc、py2、py!等等,最后一位可以是任意的字符。
像上面这样“.”“\w”“\d”等有特殊用途、不代表其本身字符意义的符号称之为元字符。利用元字符进行组合可以匹配各种字符串。常用的元字符如下表9-1所示。;在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n~m个字符。
下面看一个复杂的例子:\d{3}\s+\d{3,8}。;[0-9a-zA-Z\_]可以匹配一个数字、字母或者下画线。
[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下画线组成的字符串,如a100,0_Z,Py3000等。
[a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下画线开头,后接任意个由一个数字、字母或者下画线组成的字符串,也就是Python合法的变量。
[a-zA-Z\_][0-9a-zA-Z\_]{0,19}更精确地限制了变量的长度是1~20个字符(前面1个字符+后面最多19个字符)。
A|B可以匹配A或B,所以(P|p)ython可以匹配Python或者python。
^表示行的开头,^\d表示必须以数字开头。
$表示行的结束,\d$表示必须以数字结束。
需要注意,py也可以匹配python,但是加上^py$就变成了整行匹配,就只能匹配py了。;如匹配文本“eamil120487362@1234”中的Email正则表达式,则匹配模式为:\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,4}\b,具体的表达式解析如下图.;9.2re模块及其函数
Python提供re模块,其包含所有正则表达式的功能,在使用时先使用importre导入。由于Python的字符串本身也用\转义,所以要特别注意。
s=ABC\\-001
正则表达式对应的字符串变成:ABC\-001。
因此强烈建议使用Python的r做前缀,这样就不用考虑转义的问题。
s=rABC\-001
正则表达式对应的字符串仍是:ABC\-001。;re.match()总是从字符串的开头位置开始查找匹配,并返回匹配到的字符串的match对象(匹配对象)class_sre.SRE_Match,如果不是在起始位置或者匹配不到,match()函数将返回None。
re.match()匹配成功返回的结果是match对象,有三部分,匹配的结果是第三部分match的值,第二部分表示匹配到的起止范围span,如In[2]返回的结果第二部分span=(0,9)。
也可直接使用group()方法直接返回匹配结果。;9.2.1分组
除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的即为要提取的分组(Group)。
例如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码。;如果正则表达式中定义了组,就可以在match对象上用group()方法提取子串。注意到group(0)是原始字符串,group(1)、group(2)……表示第1、2……个子串。提取子串非常有用,举例如下。;9.2.2切分字符串
用正则表达式切分字符串比用固定的字符更灵活,一般切分方法如下。;9.2.3re.search()函数
re.search()函数对整个字符串进行搜索匹配,返回第一个匹配到的字符串match对象。格式如下。
re.search(pattern,string[,flags=0])
pattern:匹配模式,由pile获得。
string:被匹配的文本
您可能关注的文档
- 现代光电子技术 课件 第1、2章 从光量子到光电子、激光技术.pptx
- 现代光电子技术 课件 第3--5章 激光光纤通讯、 调制技、光电探测技术术.pptx
- 现代光电子技术 课件 第6、7章 光伏技术、 激光应用技术.pptx
- 现代光电子技术 课件 第7、8章 激光应用技术、 集成电路技术.pptx
- 现代光电子技术 课件全套 江兴方 第1--8章 从光量子到光电子---集成电路技术.pptx
- 汽车发动机电控系统原理与检修(微课视频版) 第2版 课件 项目二 电控汽油喷射系统.pptx
- 汽车发动机电控系统原理与检修(微课视频版) 第2版 课件 项目三 电控点火系统.pptx
- 汽车发动机电控系统原理与检修(微课视频版) 第2版 课件 项目四 发动机辅助控制系统.pptx
- 汽车发动机电控系统原理与检修(微课视频版) 第2版 课件 项目一 发动机电控系统概述.pptx
- 汽车发动机电控系统原理与检修(微课视频版) 刘佳 第2版 课件全套 项目1--5 发动机电控系统概述 ---发动机电控系统故障诊断与检修基础.pptx
- 2023学年诸暨中学高三年级第二学期3月第二次模拟考试(政治)公开课教案教学设计课件资料.docx
- 运动的合成与分解(二)公开课教案教学设计课件资料.pptx
- 近五年浙江省各地图形的翻折(轴对称)原题公开课教案教学设计课件资料.doc
- 如何做教师-2019-11-13-中关村一小相关公开课教案教学设计课件资料.pptx
- 生活中的圆周运动 (水平面)正式版公开课教案教学设计课件资料.pptx
- 专题10 条件概率与全概率公式公开课教案教学设计课件资料.docx
- 金华市东阳市2019学年第二学期期末测试卷公开课教案教学设计课件资料.doc
- 5 琥珀(第二课时)【慕课堂版】公开课教案教学设计课件资料.pptx
- 项目五 打印米老鼠模型公开课教案教学设计课件资料.ppt
- (打印版)9月25日地理周练公开课教案教学设计课件资料.docx
文档评论(0)