- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正则表达式4
正则表达式介绍1
正则表达式 (Regularexpressions 也称为 REs,或 regexes 或 regexpatterns)本质上
是一个微小的且高度专业化的编程语言。它被嵌入到 Python 中,并通过 re 模块提供给程
序猿使用。使用正则表达式,你需要指定一些规则来描述那些你希望匹配的字符串集合。这
些字符串集合可能包含英语句子、 e-mail 地址、TeX 命令,或任何你想要的东东。
正则表达式模式被编译成一系列的字节码,然后由一个 C 语言写的匹配引擎所执行。对于
高级的使用,你可能需要更关注匹配引擎是如何执行给定的 RE,并通过一定的方式来编写
RE,以便产生一个可以运行得更快的字节码。本文暂不讲解优化的细节,因为这需要你对匹
配引擎的内部机制有一个很好的理解。但本文的例子均是符合标准的正则表达式语法。
小甲鱼注释:Python 的正则表达式引擎是用 C 语言写的,所以效率是极高的。另,所谓的
正则表达式,这里说的 RE,就是上文我们提到的 “一些规则”。
正则表达式语言相对较小,并且受到限制,所以不是所有可能的字符串处理任务都可以使用
正则表达式来完成。还有一些特殊的任务,可以使用正则表达式来完成,但是表达式会因此
而变得非常复杂。在这种情况下,你可能通过自己编写 Python 代码来处理会更好些;尽管
Python 代码比一个精巧的正则表达式执行起来会慢一些,但可能会更容易理解。
小甲鱼注释:这可能是大家常说的 “丑话说在前”吧,大家别管他,正则表达式非常优秀,
她可以处理你 98.3% 的文本任务,一定要好好学哦~~~~~
简单的模式
我们将从最简单的正则表达式学习开始。由于正则表达式常用于操作字符串的,因此我们从
最常见的任务下手:字符匹配。
字符匹配
大多数字母和字符会匹配它们自身。举个例子,正则表达式 FishC 将完全匹配字符串
FishC。(你可以启用不区分大小写模式,这将使得 FishC 可以匹配 FISHC 或 fishc,
我们会在后边讨论这个话题。)当然这个规则也有例外。有少数特殊的字符我们称之为元字
符 (metacharacter),它们并不能匹配自身,它们定义了字符类、子组匹配和模式重复次
数等。本文用很大的篇幅专门讨论了各种元字符及其作用。
下边是元字符的完整列表 (我们将在后边逐一讲解):
. ^ $ * + ? { } [ ] \ | ()
小甲鱼注释:如果没有这些元字符,正则表达式就变得跟字符串的 find() 方法一样平庸
了
我们先来看下方括号 [],它们指定一个字符类用于存放你需要匹配的字符集合。可以单独
列出需要匹配的字符,也可以通过两个字符和一个横杆 - 指定匹配的范围。例如 [abc] 会
匹配字符 a,b 或 c;[a-c] 可以实现相同的功能。后者使用范围来表示与前者相同的字符
集合。如果你想只匹配小写字母,你的 RE 可以写成 [a-z]。
需要注意的一点是:元字符在方括号中不会触发 “特殊功能”,在字符类中,它们只匹配自
身。例如 [akm$] 会匹配任何字符 a,k,m 或 $,$ 是一个元字符,但在方括
号中它不表示特殊含义,它只匹配 $ 字符本身。
你还可以匹配方括号中未列出的所有其他字符。做法是在类的开头添加一个脱字符号 ^ ,
例如 [^5] 会匹配除了 5 之外的任何字符。
或许最重要的元字符当属反斜杠 \ 了。跟 Python 的字符串规则一样,如果在反斜杠后边
紧跟着一个元字符,那么元字符的 “特殊功能”也不会被触发。例如你需要匹配符号 [ 或
\,你可以在它们前面加上一个反斜杠,以消除它们的特殊功能:\[,\\。
反斜杠后边跟一些字符还可以表示特殊的意义,例如表示十进制数字,表示所有的字母或者
表示非空白的字符集合。
小甲鱼解释:反斜杠真牛逼,反斜杠后边跟元字符去除特殊功能,反斜杠后边跟普通字符实
现特殊功能。
让我们来举个例子:\w 匹配任何单词字符。如果正则表达式以字节的形式表示,这相当于
字符类 [a-zA-Z0-9_];如果正则表达式是一个字符串,\w 会匹配所有 Unicode 数据库
(unicodedata 模块提供)中标记为字母的字符。你可以在编译正则表达式的时候,通过提
供 re.ASCII 表示进一步限制 \w 的定义。
小甲鱼解释:re.ASCII 标志使得 \w 只能匹配 ASCII 字符,不要忘了,Python3 是 Unicode
的。
下边列举一些反斜杠加字符构成的特殊含义:
特殊字
含义
符
您可能关注的文档
- 梯度式、渐进式户籍改革与城市融合(终稿).pdf
- P90比大小.ppt
- 梅溪湖板块市场环境1031(终).pdf
- ok教育学院 [自动保存的].pptx
- 检察环节刑事错案的成因及防治对策.pdf
- 检测技术-误差的合成与分配.pdf
- 梅特勒-托利多 MS-S-MS-L.pdf
- pcdmis考试试题.docx
- Oracle 中间件产品概述.pptx
- 检测、估计和调制理论 第六章 线性估计.pdf
- 2024学年小学关注安全共创和谐班会教学设计.docx
- 2024学年小学意识到危险是保护生命的开始班会教学设计.docx
- 2024学年小学收心养性消除校园铁拳班会教学设计.docx
- 2024学年小学珍爱生命远离校园霸凌班会教学设计.docx
- 2024学年小学制止校园暴力培育阳光校园文化班会教学设计.docx
- 2024学年小学坚持尊重拒绝恶性互动建构校园和谐班会教学设计.docx
- 2025年江苏专转本《化工生物综合操作技能》精编讲义复习备考必备资料.pdf
- 2025年江苏专转本《管理综合基础理论》精编讲义复习备考必备资料.pdf
- 2025年江苏专转本《文史综合基础理论(中国古代文学)》精编讲义复习备考必备资料.pdf
- 2025年江苏专转本《机械工程综合基础理论(机械设计基础)》精编讲义复习备考必备资料.pdf
文档评论(0)