正则表达式match和findall的区别

时间:2022-02-04 22:38:38

在python中match和findall两个方法都可用于寻找字符串中匹配的字符串。其中match方法根据正则模式,从源字符的第一个字符开始匹配,如果寻找到了相应匹配模式,则返回相应结果,例如:

import  re

s='abcd';

p = re.compile('abcd');

m = p.match(s);

print m.group();

这时程序会输出:abcd

如果把源程序修改为:

import  re

s='abcd';

p = re.compile('bcd');

m = p.match(s);

print m.group();

就不能匹配上相应字符串,由此可以看出match匹配时是从源字符串的第一个字符开始,如果匹配上了,就返回匹配结果,否则不能匹配到相应结果。


对于findall方法,并不是从源字符串第一个字符开始匹配的,而是从第一个匹配上的字符开始,返回所有的可以匹配上的字符,例如:

import  re
s='abcd';
p = re.compile('bcd');
m = p.findall(s);
print m;

返回的结果是:['bcd'],主要findall返回的是一个list对象。