字符串——模式匹配 | 第二部分 类型与操作 —— 第 4 章: 介绍 python 对象类型 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-380玩彩网官网入口
在继续前进前,值得注意的一点是没有一个字符串对象的自有方法支持基于模式的文本处理。文本模式匹配是一个高级工具,超出了本书的范围,但有其他脚本语言背景的读者可能会对如何在python中进行模式匹配感兴趣,我们导入了一个名为 re
的模块。这个模块有搜索、分割和替换的类似调用,但因为可以使用模式来指定子字符串,因此更通用:
>>> import re
>>> match = re.match('hello[ \t]*(.*)world', 'hello python world')
>>> match.group(1)
'python '
这个例子搜索一个以单词“hello”开始的子字符串,跟着0或多个制表符或空格,再跟着被保存为一个匹配分组的任意数量的字符,以单词“world”终止。如果这个子字符串被找到,被小括号中包裹的模式部分所匹配的字符串部分就为分组。比如,下面这个模式,挑出了被斜杠分隔的三个分组,并且结果类似于被替代模式分割:
>>> match = re.match('[/:](.*)[/:](.*)[/:](.*)',
'/usr/home:lumberjack')
>>> match.groups()
('usr', 'home', 'lumberjack')
>>> re.split('[/:]', '/usr/home/lumberjack')
['', 'usr', 'home', 'lumberjack']
模式匹配本身是一个高级的文本处理工具,但python还支持更高级的文本和语言处理(包括xml和html解析,还有自然语言分析)。在第37章末尾将看到模式和xml解析的额外的简短例子,但对于本教程,字符串已经说得足够多了,所以让我们前进到下一个类型。