先来看看string.split()
这种形式,例如:
>>> import string
>>> str = 'assadddaffffa'
>>> str.split('a')
['', 'ss', 'ddd', 'ffff', '']
str.split()
是分解字符串来完成解析的最常用的方法之一。不过,它只支持使用字面值作为分隔符。有时,如果输入没有一致的格式,就需要有1个正则表达式。例如,有很多纯文本标记语言都把段落分隔符定义为2个或多个换行符(\n
)。在这种情况下,就不能使用str.split()
,因为这个定义中提到了“或多个”。
再看1个例子:
>>> import re
>>> formula = 'YOU == ME**2'
>>> re.split('[A-Z]+', formula)
['', ' == ', '**2']
这里,[A-Z]+
中的加号+
表示,至少1次。[A-Z]+
则表示,至少出现1个大写字母。
re.split('[A-Z]+', formula)
的含义是,将formula字符串分解。分解的规则是,将formula字符串中的1个及以上字母去掉,返回剩余字符的1个列表。
>>> formula = 'YOU == ME**2'
>>> re.split('([A-Z]+)', formula)
['', 'YOU', ' == ', 'ME', '**2']
>>> formula = 'YOU==ME**2'
>>> re.split('([A-Z]+)', formula)
['', 'YOU', '==', 'ME', '**2']
'([A-Z]+)'
相较于'[A-Z]+'
多了1对圆括号,意思是保留formula中的字母。
参考文献:
1. 《Python 标准库》 - 第1章 文本 - 1.3 re 正则表达式 - 1.3.11 利用模式拆分(P46 - P48)。