首页 > 编程 > Python > 正文

Python 正则表达式操作指南

2020-02-23 04:45:12
字体:
来源:转载
供稿:网友
原文作者:A.M. Kuchling (amk@amk.ca)
授权许可:创作共享协议
翻译人员:FireHare
校对人员:Leal
适用版本:Python 1.5 及后续版本
http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97#.E7.BC.96.E8.AF.91.E6.AD.A3.E5.88.99.E8.A1.A8.E8.BE.BE.E5.BC.8F
目录


目录

[隐藏]
  • 1 简介
  • 2 简单模式
  • 2.1 字符匹配
  • 2.2 重复
  • 3 使用正则表达式
  • 3.1 编译正则表达式
  • 3.2 反斜杠的麻烦
  • 3.3 执行匹配
  • 3.4 模块级函数
  • 3.5 编译标志
  • 4 更多模式功能
  • 4.1 更多的元字符
  • 4.2 分组
  • 4.3 无捕获组和命名组
  • 4.4 前向界定符
  • 5 修改字符串
  • 5.1 将字符串分片
  • 5.2 搜索和替换
  • 6 常见问题
  • 6.1 使用字符串方式
  • 6.2 match() vs search()
  • 6.3 贪婪 vs 不贪婪
  • 6.4 不用 re.VERBOSE
  • 7 反馈
  • 8 关于本文档
  • [编辑] 简介

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影。


    就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。使用这个小型语言,你可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语句、e-mail地址、TeX命令或任何你想搞定的东西。然后你可以问诸如“这个字符串匹配该模式吗?”或“在这个字符串中是否有部分匹配该模式呢?”。你也可以使用 RE 以各种方式来修改或分割字符串。


    正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。在高级用法中,也许还要仔细留意引擎是如何执行给定 RE ,如何以特定方式编写 RE 以令生产的字节码运行速度更快。本文并不涉及优化,因为那要求你已充分掌握了匹配引擎的内部机制。哈哈

    正则表达式语言相对小型和受限(功能有限),因此并非所有字符串处理都能用正则表达式完成。当然也有些任务可以用正则表达式完成,不过最终表达式会变得异常复杂。碰到这些情形时,编写 Python 代码进行处理可能反而更好;尽管 Python 代码比一个精巧的正则表达式要慢些,但它更易理解。

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表