先来看一下下面的例子,使用ipython实验:
正常使用结果:
In [4]: re.findall(r'ab','123ab156465ab1111') Out[4]: ['ab', 'ab']
下面是用户自己添加一个分组,和添加两个分组的例子:
In [5]: re.findall(r'a(b)','123ab156465ab1111') Out[5]: ['b', 'b'] In [8]: re.findall(r'a(b)(c)','123abc156465abc1111') Out[8]: [('b', 'c'), ('b', 'c')]
看到了吧,其实在findall中如果用户添加分组的时候,其实默认显示的是用户分组的结果。为了想要显示匹配所有的内容,需要取消显示用户分组
解决方式,要加上问号来启用“不捕捉模式”:
In [7]: re.findall(r'a(?:b)','123ab156465ab1111') Out[7]: ['ab', 'ab']
下次在使用的时候注意一下吧......