Charpter11 Regular Expressions(正则表达式)
知识点1:
关于正则表达式(Regular Expressions)
正则表达式是一种为匹配文本字符串提供的一种简洁而灵活的方法。正则表达式可以被正则表达式处理器解释。
关于python的正则表达式:
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。
re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
知识点2:
re.search
用re.search()来取代find的功能,找到字符串中相对应的字符。
import re
handle = open('mbox-short.txt')
for line in handle:
line = line.rstrip()
if re.search('From' , line):
print(line)
需要注意的是括号中的两个参数应该怎样正确填写。
知识点3:
re.search()来代替startwith()的功能
import re
handle = open('mbox-short.txt')
for line in handle:
line = line.rstrip()
if re.search('^From:' , line):
print(line)
注意,这边与上一段程序的区别就在于符号^,这个符号的意思就是只匹配寻找以‘From:’开头的,而不匹配其他位置。因此才可以等同于startswith()。
知识点4:
对于不同的正则表达式的解读:
^X.*:
对于这个表达式,其中只有^ . *三个是特殊符号,他们的意思分别是:
- ^的意思是以大写的X开头
- .的意思是任意的字符
- *的意思是任意次数,即大于等于0次
因此合起来的意思就是,寻找以大写的X开头的后面跟任意字符,最后接一个:的句子,程序验证代码如下:
import re
fhandle = open('mbox-short.txt')
for line in fhandle:
line = line.rstrip()
if re.search('^X.*:' , line):
print(line)
如果想要更加精确的结果,例如该结果的第三行,中间的字符之间有空格,不需要这种数据的话,就要重新书写正则表达式使其更加精确。
这里的正则表达式翻译过来就是:以X—开头,后面不跟空格的任意字符,出现一次或多次,后面再跟冒号的内容
这样的话,第三行类似的内容就会被筛选剔除。
值得一提的是,re.search()的返回值为True或False
有一篇非常详细的介绍正则表达式的博文,值得学习推荐:
https://www.runoob.com/python/python-reg-expressions.html