总结网络一些零碎知识,综合自己的理解:
函数名 | 原型 | 详解 | 返回类型 | 注意事项 |
re.match |
import re re.match(pattern,string,flags) |
pattern:正则表达式,匹配成功,返回一个Match,否则返回一个None string:要匹配的字符串 flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等等 |
返回一个_sre.SRE_Match对象,其有两个方法:group() groups() |
他只会去从字符串的开始与正则表达式做匹配; 并不会与字符串的所有字符进行匹配 |
re.search | re.search(pattern,string,flags) |
与match一模一样,唯一区别: 他会去匹配整个字符串,而match只会去匹配字符串的开始 |
groups():返回一个元组:(group(1),group(2)...)不包括group(0) group():默认返回group(0) |
对于一个string,无论其中有多少个被匹配上的字符串,他永远只返回第一个匹配上的字符串 |
re.sub | re.sub(pattern,repl,string,count) |
pattern:正则表达式 repl:替换后的字符 string:要匹配的字符串 count:替换的个数,0代表所有 |
返回替换后的string | |
re.findall | re.findall(pattern,string,flag) |
pattern:正则表达式 string:要匹配的字符串 flag:标志位 |
总是返回一个list,如果未匹配到任何,则返回一个空list | 与match和search不同的是:他会将一个字符串中所有的匹配到的目标均返回至列表中 |
e.compile | re.compile(pattern,flag) |
flag:编译标识: I IGNORECASE 忽略大小写 M MULTILINE 多行匹配 针对于^和$使用 S DOTALL .号将匹配所有字符 X VERBOSE 将忽略规则表达式中的空白,若需要使用则需\+空白,同时允许使用'#'在规则表达式中作注释说明 flag使用方法:如,re.MULTILINE 多个flag可以使用'|'来分隔 |
对规格表达式进行预编译,返回一个pattern对象,可以使用这个pattern对象调用match和search等方法 | 这种方式对于需要做大量相同匹配的正则表达式可以大大提高效率 |
例子说明:
1.match && search && findall:
import re
stringA = 'abcdefgh,123asd,333'
matchA_failed = re.match('\d',stringA)
print type(matchA_failed) #None obj.
print matchA_failed #None 他只匹配首位
matchA_success = re.match('...',stringA)
print type(matchA_success) #_sre.SRE_Match obj.
print matchA_success #_sre.SRE_Match obj.
print matchA_success.group() #该对象存在2个方法group()和groups(),
print matchA_success.groups()
searchA_success = re.search('\d+',stringA)
print searchA_success.group() #search和match完全一样,区别仅仅是,search全字段匹配
#返回的均为匹配到的第一个,此处search仅返回123
findall_success = re.findall('\d+',stringA)
print findall_success
#与上述不同的是,他返回一个列表,这个列表中包含了所有匹配到的内容