正则表达式4.pdf

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 的。 下边列举一些反斜杠加字符构成的特殊含义: 特殊字 含义 符

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档