6.9.3 正则表达式
由于内存映射文件就类似于一个字符串,因此也常与其他处理字符串的模块一起使用。
import mmap
import re
pattern = re.compile(rb'(\.\W+)?([^.]?rem[^.]*?\.)',
re.DOTALL | re.IGNORECASE | re.MULTILINE)
with open('lorem.txt','r') as f:
with mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ) as m:
for match in pattern.findall(m):
print(match[1].replace(b'\n',b' '))
由于这个模式包含两个组,所以findall()的返回值是一个元组序列。print语句会找出匹配的句子,并用空格代替换行符,使各个结果都打印在同一行上。
运行结果: