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

忙碌一天,晚上终于有静下来的时间,继续昨天的工作。

11.1 正则表达式的字符匹配

  我们可以用许多其它的特殊字符创建更加强大的正则表达式。最常用的特殊符号是可匹配任何字符的句号(".")。在以下的示例中,正则表达式”F..m:“将匹配”From:”,“Fxxm:",”F12m:“,或者”[email protected]:“等类似字符串,因为表达式中间的句号可匹配任何字符。

1 import re
2 hand = open(‘mbox-short.txt‘)
3 for line in hand:
4     line = line.rstrip()
5     if re.search(‘^F..m:‘, line):
6         print line

  在正则表达式中组合使用表示一个字符任意重复次数的星号(”*")和加号("+")会使表达式特别强大。其中星号表示在查找的字符串中,匹配字符可以重复出现零次以上,而加号则是重复一次以上。

  在下面的示例中,我们使用重复的通配符进一步缩小我们的查找范围:

1 import re
2 hand = open(‘mbox-short.txt‘)
3 for line in hand:
4     line = line.rstrip()
5     if re.search(‘^From:[email protected]‘, line):
6         print(line)

  查找字符串“From:[email protected]”将成功匹配那些以“From:”开头,接着跟着一个以上任意字符,再跟着一个“@”符的行。所以这会匹配类似以下的行:

From: stephen.marquard @uct.ac.za

这个".+"通配符扩展匹配所有从冒号到@符之间的所有字符。

From:[email protected]

加号和星号符的“一意孤行”的被认为是好的。例如以下的字符串将被外推至最后的@符而匹配:

From:[email protected], [email protected], and cwen @iupui.edu

让星号符和加号符不这么贪婪也是可以的,但是需要添加另外的符号。如何关闭它们贪婪的行为请参看详细的文档。

时间: 2024-12-29 09:59:11

Python for Informatics 第11章 正则表达式(二)的相关文章

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

注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 11.3 组合查询和抽取 如果我们想以“X-”字符串开头的行中找到数字,就像下面两行字符串: X-DSPAM-Confidence: 0.8475X-DSPAM-Probability: 0.0000 但我们不只是要任意行中的任意浮点数,而是具备上面格式的行中的数字. 我们可以创建以下正则表达式来选择这样的行: ^X-.*: [0-9.]+ 这个表达式的含义是以“X-”两个字符

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

目前为止,我们一直在通读文件,查找模式和抽取字里行间我们感兴趣的各种信息.我们一直在使用像split和find的字符串方法,以及列表和字符串的切割功能来抽取行中的部分内容. 像这样的查找和抽取任务是如此常见,所以Python拥有一个非常强大的库——正则表达式(regular expressions)来优雅地处理这些任务.我们未早一点介绍正则表达式是因为,虽然它们很强大,但是有点复杂,并且需要一些时间去适应它们的语法. 正式表达式近乎是一个用来查找和分析字符串的小型编程语言.事实上,关于正则表达式

Python基础教程 第11章: 文件和流 学习笔记

本文部分内容转载于: http://www.runoob.com/python/python-files-io.html http://docs.pythontab.com/python/python2.7/inputoutput.html#tut-files 打开文件: 你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写.语法: file object = open(file_name [, access_mode][, buff

《跟阿铭学Linux》第11章 正则表达式:课后习题与答案

1. 如何把 /etc/passwd 中用户uid 大于500 的行给打印出来? awk -F ':' '$3 > 500' /etc/passwd 2. awk中 NR,NF两个变量表示什么含义?awk -F ':' '{print $NR}' /etc/passwd  会打印出什么结果出来? NR表示行数,NF表示一共有多少段 awk -F ':' '{print $NR}' /etc/passwd  会依次打印对应的行数的段,第一行打印第一段,第二行打印第二段... 到了最后就打印空行了

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

上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的特点(注意事项) 2)赋值语句的形式:基本形式.元组及列表解包赋值.序列赋值.扩展的序列解包.多目标赋值.增量赋值 3)变量命名规则 2.表达式语句 1)常见的表达式语句 2)表达式语句和原位置修改 3.打印操作 1)调用形式 2)应用示例 以下是针对以上重点内容的详细说明 1.赋值语句 1)赋值语

Python for Infomatics 第13章 网页服务二(译)

注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 13.4 JavaScript Object Notation-JSON JSON的格式灵感来自JavaScript语言中的对象和数组格式.因为Python语言的发明比JavaScript要早,所以Python关于词典和列表的语法影响了JSON的语法,故而JSON和Python的词典和列表的结合体几乎完全相同. 以下是JSON的一个编码,它

Python for Infomatics 第12章 网络编程二(译)

注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 12.3 用HTTP协议获取一张图片 在上一节的例子中,我们获取的是一个有换行符的文本文件,并简单的把它显示在屏幕上.同样我们可以用一个小程序通过HTTP协议获取图片.下面这个程序运行时,不是直接在屏幕上显示数据,而是剔除头信息,然后将收到的数据合并保存为一个图片文件.具体代码如下: import socket import time mysock = socket.socke

Python学习 【四】:正则表达式

一.正则表达式基础 1.简介 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一

Python for Infomatics 第12章 网络编程三(译)

注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.5 HTML分析和网页抓取 urllib库一项最常用的功能是抓取网页.就是我们编写一个程序,将自己伪装成网页浏览器,在获取网页之后,再以查找模式检索网页中的数据. 以搜索引擎Google为例,它将查看一个网页的源码,然后抽取其中的链接,再用这些链接获取网页.抽取链接,并一直循环.使用这个技巧,Google几乎爬遍网页上的所有页面. G