Python for Informatics 第11章 正则表达式五(译)
注:文章原文为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章 正则表达式五(译)的更多相关文章
- Python for Informatics 第11章 正则表达式四(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.3 组合查询和抽取 如果我 ...
- Python for Informatics 第11章 正则表达式六(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.7 调试 Python有一 ...
- Python for Informatics 第11章 正则表达式三(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.2 用正则表达式抽取数据 ...
- Python for Informatics 第11章 正则表达式二(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.1 正则表达式的字符匹配 ...
- Python for Informatics 第11章 正则表达式一(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 目前为止,我们一直在通读文件,查 ...
- 《Python学习手册 第五版》 -第11章 赋值、表达式和打印
上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...
- 《python基础教程(第二版)》学习笔记 文件和素材(第11章)
<python基础教程(第二版)>学习笔记 文件和素材(第11章) 打开文件:open(filename[,mode[,buffering]]) mode是读写文件的模式f=open(r' ...
- Python for Infomatics 第12章 网络编程五(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.8 用urllib读取二进 ...
- [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题
---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...
随机推荐
- Hibernate映射文件如何配置触发器
Hibernate映射文件之触发器生成(generated属性.database-object元素) (2013-02-27 12:28:49) 转载▼ 标签: it 分类: JAVA学习笔记 这里分 ...
- Schema
Schema约束 1.namespace 相当于schema文件的id 2.targetNamespace属性 用来指定schema文件的namespace的值 3.xmlns属性 引入一个约束,它的 ...
- 如何应对ISP乱插广告(案例分析)
一.广告从何而来? 利益让人铤而走险,从而推动行业“发展”:广告的利益还真不小,xx房产门户网站上一个广告位少则几千,多则几十万:记得在校读书的时候,刚学会做网站,第一想法就是等自己的网站发展成熟有人 ...
- 关于Javascript的使用参考
DOM编程>1.js重要的作用就是可以让用户可以与网页元素进行交互操作-->JS精华之所在 >2.DOM编程也是ajax的基础 >3.DOM(文档对象模型),是HTML与XML ...
- 02OC的类和对象
这章重点介绍OC的类以及对象,由于C语言是面向过程语言,而OC只是对于C语言多了一些面向对象的特性,所以OC相对于其他面向对象语言,例如C#.Java等没有那么多的语法特性,所以差别还是比较大的. 一 ...
- 2015安徽省赛 G.你来擒孟获
http://xcacm.hfut.edu.cn/problem.php?id=1211 SPFA模板题目 最短路变种,从起点终点各找一次最短路相加 #include<iostream> ...
- nodejs配置及cmd常用操作
一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...
- iterator接口
Iterator用来做遍历,所有实现Collection接口的容器都有一个Iterator的方法以返回一个Iterator接口的对象
- Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space. public class Solution { p ...
- Unity3D NGUI动态生成模糊背景图
先上效果. 制作原理:模糊的部分是用UITexture,前面是一个UISprite.用主摄像机渲染出一张纹理,把这张纹理模糊处理,把这张纹理赋值给UITexture. 脚本代码 using Unity ...