首页 > 代码库 > match、search、sub、findall、compile区别

match、search、sub、findall、compile区别

摘自网络,综合自己的理解:

 

函数名原型详解返回类型注意事项
re.matchimport re
re.match(pattern,string,flags)
pattern:正则表达式,匹配成功,返回一个Match,否则返回一个None
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等等
返回一个_sre.SRE_Match对象,其有两个方法:group()
groups()
他只会去从字符串的开始与正则表达式做匹配;
并不会与字符串的所有字符进行匹配
re.searchre.search(pattern,string,flags)与match一模一样,唯一区别:
他会去匹配整个字符串,而match只会去匹配字符串的开始
groups():返回一个元组:(group(1),group(2)...)不包括group(0)
group():默认返回group(0)
对于一个string,无论其中有多少个被匹配上的字符串,他永远只返回第一个匹配上的字符串
re.subre.sub(pattern,repl,string,count)pattern:正则表达式
repl:替换后的字符
string:要匹配的字符串
count:替换的个数,0代表所有
返回替换后的string 
re.findallre.findall(pattern,string,flag)pattern:正则表达式
string:要匹配的字符串
flag:标志位
总是返回一个list,如果未匹配到任何,则返回一个空list与match和search不同的是:他会将一个字符串中所有的匹配到的目标均返回至列表中
re.compilere.compile(pattern,flag)flag:编译标识:
I  IGNORECASE  忽略大小写
M  MULTILINE  多行匹配 针对于^和$使用
S  DOTALL  .号将匹配所有字符
X  VERBOSE  将忽略规则表达式中的空白,若需要使用则需\+空白,同时允许使用‘#‘在规则表达式中作注释说明
flag使用方法:如,re.MULTILINE
多个flag可以使用‘|‘来分隔
对规格表达式进行预编译,返回一个pattern对象,可以使用这个pattern对象调用match和search等方法这种方式对于需要做大量相同匹配的正则表达式可以大大提高效率