- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[编辑] 简介
Python 自 1.5 版本起增加了 re 模块,它提供 Perl 风格的正则表达式模式。
Python 1.5 之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风
格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用
regex 模块,当然偶尔你还是可能在老代码里发现其踪影。
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,
(在 Python 中)它内嵌在 Python 中,并通过 re 模块实现。使用这个小型语
言,你可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语
句、e-mail 地址、TeX 命令或任何你想搞定的东西。然后你可以问诸如“这个
字符串匹配该模式吗?”或“在这个字符串中是否有部分匹配该模式呢?”。
你也可以使用 RE 以各种方式来修改或分割字符串。
正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
在高级用法中,也许还要仔细留意引擎是如何执行给定 RE ,如何以特定方式
编写 RE 以令生产的字节码运行速度更快。本文并不涉及优化,因为那要求你
已充分掌握了匹配引擎的内部机制。哈哈
正则表达式语言相对小型和受限(功能有限),因此并非所有字符串处理都能
用正则表达式完成。当然也有些任务可以用正则表达式完成,不过最终表达式
会变得异常复杂。碰到这些情形时,编写 Python 代码进行处理可能反而更
好;尽管 Python 代码比一个精巧的正则表达式要慢些,但它更易理解。
[编辑] 简单模式 我们将从最简单的正则表达式学习开始。由于正则表达式常用于字符串操作,
那我们就从最常见的任务:字符匹配 下手。
有关正则表达式底层的计算机科学上的详细解释(确定性和非确定性有限自动
机),你可以查阅编写编译器相关的任何教科书。
字符匹配
大多数字母和字符一般都会和自身匹配。例如,正则表达式 test 会和字符串
“test”完全匹配。(你也可以使用大小写不敏感模式,它还能让这个 RE 匹
配“Test”或“TEST”;稍后会有更多解释。)
这个规则当然会有例外;有些字符比较特殊,它们和自身并不匹配,而是会表
明应和一些特殊的东西匹配,或者它们会影响到 RE 其它部分的重复次数。本
文很大篇幅专门讨论了各种元字符及其作用。
这里有一个元字符的完整列表;其含义会在本指南馀下部分进行讨论。
. ^ $ * + ? { [ ] \ | ( )
我们首先考察的元字符是[ 和 ]。它们常用来指定一个字符类别,所谓字
符类别就是你想匹配的一个字符集。字符可以单个列出,也可以用“-”号分隔
的两个给定字符来表示一个字符区间。例如,[abc] 将匹配a, b, 或 c
中的任意一个字符;也可以用区间[a-c]来表示同一字符集,和前者效果一致。
如果你只想匹配小写字母,那么 RE 应写成 [a-z].
元字符在类别里并不起作用。例如,[akm$]将匹配字符a, k, m, 或 $
中的任意一个;$通常用作元字符,但在字符类别里,其特性被除去,恢复成
普通字符。
你可以用补集来匹配不在区间范围内的字符。其做法是把^作为类别的首个字
符;其它地方的^只会简单匹配 ^字符本身。例如,[^5] 将匹配除 5 之
外的任意字符。
也许最重要的元字符是反斜杠\。 做为 Python 中的字符串字母,反斜杠后
面可以加不同的字符以表示不同特殊意义。它也可以用于取消所有的元字符,
这样你就可以在模式中匹配它们了。举个例子,如果你需要匹配字符 [ 或
\,你可以在它们之前用反斜杠来取消它们的特殊意义: \[ 或 \\。
一些用 \ 开始的特殊字符所表示的预定义字符集通常是很有用的,象数字
集,字母集,或其它非空字符集。下列是可用的预设特殊字符:
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。 \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。
这样特殊字符都可以包含在一个字符类中。如,[\s,.]字符类将匹配任何空白
字符或,或.。
本节最后一个元字符是 . 。它匹配除了换行字符外的任何字符,在 alternate
模式(re.DOTALL)下它甚至可以匹配换行。. 通常被用于你想匹配“任何字
符”的地方。
[编辑] 重复
正则表达式第一件能做的事是能够匹配
您可能关注的文档
- PS2鼠标接口程序设计总结.doc
- Ps6---路径,通道 举例详细讲解.doc
- PS7.0快捷键.doc
- ps处理raw格式.doc
- PS的键盘快捷键大全.doc
- PS的三种用法:如何修改多帧gif动画图片、如何利用FW中保存的带层png文件、如何去水印.ppt
- PS多图合成精美的非主流图片.ppt
- ps各种快捷键使用方法.doc
- ps将图层全部导出成图片.docx
- ps经典快捷方式.doc
- 未来五年AR技术在工业生产中的变革与挑战分析报告.docx
- 2025年社区老年日间照料中心服务满意度提升策略.docx
- 智能垃圾分类项目在2025年社区治理中的应用前景研究报告.docx
- 2025年创业孵化基地建设资金申请及运营策略报告.docx
- 2025年环保型储能设备研发与应用前景分析报告.docx
- 碳中和目标下2025年能源结构调整与能源产业技术创新研究.docx
- 2025年社区老年日间照料中心社区养老产业商业模式创新.docx
- 餐饮供应链管理创新案例研究:2025年绿色可持续发展战略.docx
- 1.1.1探索勾股定理(课件)2025-2026学年度北师大版数学八年级上册.pptx
- 2025年智能仓储物流系统智能化升级与风险控制策略报告.docx
文档评论(0)