注:文章原文为Dr. Charles Severance 的 《Python for Informatics》。文中代码用3.4版改写,并在本机测试通过。

11.4 转义字符

  之前我们在正则表达式中使用特殊字符来匹配一行的开头和结尾,或者是指定通配符,当我们想匹配象"$"或"^"的实际字符时,我们需要一个方法来表示这些“正常”的字符。

  我们可以简单的在字符前添加反斜线"\"即可实现匹配。例如,我们可以使用下面的正则表达式找到金钱数额:

import re
x = 'We just received $10.00 for cookies.'
y = re.findall('\$[0-9.]+', x)

  因为我们在“$"符前添加了反斜线前缀,"\$"这个表示式就表示匹配正常的"$"符,而不是表示匹配行的尾部了。这个表达式的后半部分"[0-9.]+"表示匹配一个或者更多的数字或点。要注意的是,在方括号中,字符不是”特殊的“。所以它们是实际上的数字或点。在方括号外的".",则是一个通配符了,可以匹配任何字符。

11.5 小结

  以上是关于正则表达式的浅显介绍,要想更好的应用正则表达式,我们还需更多地学习它的语言。这些包含特殊字符的查询字符串,是沟通你匹配和抽取字符的愿望和正则表达式系统之间的桥梁。下面是一些特殊字符和字符序列:

  ^  匹配行的开头

  $  匹配行的末尾

  .   匹配任意字符(通配符)

  \s   匹配一个空白字符

  \S  匹配一个非空白字符(和\s相反)

  *  应用到它左侧紧挨的字符,表示匹配零个及以上的左侧字符

  *?   应用到它左侧紧挨的字符,表示以非贪婪模式匹配零个及以上的左侧字符

  +  应用到它左侧紧挨的字符,表示匹配一个及以上的左侧字符

  +?  应用到它左侧紧挨的字符,表示以非贪婪模式匹配一个及以上的左侧字符

  [aeiou]  匹配一个只要是在指定字符集内的元音字符。在这个例子中,它将匹配"a","e","i","o","u",而不是其它字符。

  [a-z0-9]  你可以用减号指定字符的范围,本例匹配一个必须是小写字母或数字的任意字符。

  [^A-Za-z]  当方括号内的第一个字符是插入符,它将反转逻辑。本例匹配一个除大小写字母外的其它字符。

  ()  在使用findall()过程中,在正则表达式中添加的括号,在查询匹配过程中将被忽略,但是允许你抽取括号内的匹配字符。

  \b  匹配空的字符串,但只在一个词的开头和结尾。

  \B  匹配空的字符串,但不是在一个词的开头和结尾。

  \d  匹配任意十进制数字,等同与[0-9]。

  \D  匹配任意非数字字符,等同与[^0-9]。

11.6 Unix用户的红利

  自19世纪六十年代,Unix系统就集成了正则表达式用于支持查询文件,并且几乎所有的编程语言都支持正则表达式。

  事实上Unix内置了一个叫做grep(Generalized Regular Expression Parser)的命令行程序。它可以做到本章中search()函数几乎一样的功能。所以如果你使用的是Macintosh或Linux系统,你可以在你的命令行窗口尝试以下命令:

$ grep '^From:' mbox-short.txt

From: stephen.marquard@uct.ac.za
From: louis@media.berkeley.edu
From: zqian@umich.edu
From: rjlowe@iupui.edu

  这个命令让grep显示mbox-short.txt文件中以"From:"开始的行。如果你对grep命令有一定的经验并且读过它的帮助文档,你会发现Python中的正则表达式和grep中的正则表达式有细微的差别。例如,grep不支持非空格字符"\S",所以你需要使用稍微复杂的组合"[^ ]"来匹配一个非空格的任意字符。

Python for Informatics 第11章 正则表达式五(译)的更多相关文章

  1. Python for Informatics 第11章 正则表达式四(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.3 组合查询和抽取 如果我 ...

  2. Python for Informatics 第11章 正则表达式六(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.7 调试 Python有一 ...

  3. Python for Informatics 第11章 正则表达式三(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.2 用正则表达式抽取数据 ...

  4. Python for Informatics 第11章 正则表达式二(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.1 正则表达式的字符匹配 ...

  5. Python for Informatics 第11章 正则表达式一(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 目前为止,我们一直在通读文件,查 ...

  6. 《Python学习手册 第五版》 -第11章 赋值、表达式和打印

    上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...

  7. 《python基础教程(第二版)》学习笔记 文件和素材(第11章)

    <python基础教程(第二版)>学习笔记 文件和素材(第11章) 打开文件:open(filename[,mode[,buffering]]) mode是读写文件的模式f=open(r' ...

  8. Python for Infomatics 第12章 网络编程五(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.8 用urllib读取二进 ...

  9. [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题

    ---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...

随机推荐

  1. win10 64位安装memcache扩展和开启redis扩展

    前面有关于win10下搭建wamp环境的介绍,在此不在赘述,php操作memcache有memcache库和memcached库,其中memcache是php内置的扩展库,支持面向对象和面向过程两种操 ...

  2. javascript 高级程序设计 -有感

    本来我想写一个高级程序设计总结的,结果发现我进入了一扇门,里面所有的字都要逐字逐句的理解,所有描述已经是非常精炼了,我最初的想法无异于老鼠吃大象. 我现在记录的是我在看这本时的感想. 2015.4月9 ...

  3. tyvj1198 最优矩阵连乘

    描述    一个n*m矩阵由n行m列共n*m个数排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算量为nmp.   矩阵乘法满 ...

  4. Windows群集安装

    一.安装前准备 1.安装dotnet 3.5 框架功能 2.安装starwind,并创建虚拟磁盘http://www.cnblogs.com/chhuang/p/3623305.html 3.使用iS ...

  5. mysql 主从master-slave同步复制 配置,为读写分离准备

    1.为方便,我在一个windows下安装两个mysql实例,端口分别是 3306.3307 打开 my.ini 或 my-default.ini 文件 配置 basedir datadir 和port ...

  6. Shell入门教程:Shell函数详解

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...

  7. Alpha版本冲刺总结——曙光初现

    No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 项目预期计划 界面设计 androi ...

  8. BZOJ1565——[NOI2009]植物大战僵尸

    1.题意:有一些点,点与点之间有保护关系,每个点都有一个权值,求能获得的最大值 2.分析:裸的最大权闭合图,用网络流进行求解,然后我们发现点与点之间的保护关系可能构成环,这样网络流是无法处理的,然后我 ...

  9. Linux使用手册-时区和时间设置

    1. #vi /etc/sysconfig/clockZONE=”Asia/Shanghai”UTC=false2.#vi /usr/share/zoneinfo/Asia/Shanghai,如果结尾 ...

  10. linux下 chown命令

    对Document/ 目录下的所有文件与子目录执行相同的所有者变更,修改所有者为users用户组的username用户 chown -R username:users Document/ userna ...