re模块中group()与groups()用法
#自学python中一些小收获和踩过的坑。标记下
先上案例1~group():
a='1,234'
spam=re.compile(r'^\d{1,3}(,\d{3})*$')**
re.search(spam,a).group()
re.search(spam,a).group(0)
'1,234'
re.search(spam,a).group(1)
',234'
re.search(spam,a).group(2)
IndexError: no such group
总结:group()匹配对象的方法返回类型为字符。
不管正则表达式中有无分组,均返回匹配的文本;
差别在于如group()的参数为0或空,返回匹配全部文本;
否则,则会返回匹配的对应的分组,参数如果超过表达式中分组的个数,就会报错。
案例2~groups()
a='1,234'
b='1,234,567'
spam=re.compile(r'^\d{1,3}(,\d{3})*$')
spam1=re.compile(r'^(\d{1,3})(,\d{3})*$')
re.search(spam,a).groups()
(',234',)
re.search(spam,b).groups()
(',567',)
re.search(spam1,a).groups()
('1', ',234')
re.search(spam1,b).groups()
('1', ',567')
总结:groups()匹配对象的方法,一次性获取所有的分组,返回类型为元组。
元组内值的个数取决于正则表达式内分组的个数。即使只有一个值,也别忘记在值的后面加个逗号(,)。