《Automate the Boring Stuff with Python》第七章 正则表达式
《Automate the Boring Stuff with Python》(by Al Sweigart) P157中介绍的关于findall()方法的几种情况(Python 3.8.2)
一、正则表达式中没有字符串的情况
>>> phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
>>> phoneNumRegex.findall('Cell: 415-555-9999 Work: 212-555-0000')
>>> ['415-555-9999', '212-555-0000']
直接返回相匹配的字符串的列表。
二、正则表达式中有分组的情况
>>> phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d)-(\d\d\d\d)')
>>> phoneNumRegex.findall('Cell: 415-555-9999 Work: 212-555-0000')
>>> [('415', '555', '9999'), ('212', '555', '0000')]
相匹配的字符串按照分组的情况放置于元组之中,再将元组置于列表中。
三、正则表达式中没有完全分组
>>> phoneNumRegex = re.compile(r'(\d\d\d)-\d\d\d-\d\d\d\d')
>>> phoneNumRegex.findall('Cell: 415-555-9999 Work: 212-555-0000')
>>> ['415', '212']
>>> phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d)-\d\d\d\d')
>>> phoneNumRegex.findall('Cell: 415-555-9999 Work: 212-555-0000')
>>> [('415', '555'), ('212', '555')]
这两种未完全分组的情况,只匹配正则表达式中已分组的部分,未参与分组的部分被忽略了。