findall方法分组返回结果?

为什么findall方法,指定模式字符串中包含分组,返回与分组匹配文本列表,为什么是返回.1和.66,而不是.0和.168这样?

img

先匹配1-3位数字,紧跟后面是一个.然后是两个数字。满足的条件的就是最后面的了

因为你的.数字是一个分组,且分组匹配多次,所以最后返回的是分组的最后一次匹配

因为你正则中同一个()的子匹配被{3}重复的匹配3次,每次都会重新更新这个子匹配的匹配结果,覆盖之前的结果,到最后就只有最后一次匹配结果被保留了。

re.findall() 分组的话,一次连续分组,以最后一个匹配作为结果。函数注释里面写了一句不重叠匹配。如果想要返回127.0.0.1, 使用(?:regex)的形式就行。