re.match 匹配字符串的开始,如果不符合则返回None
re.match(pattern, string, flags=0)
>>> re.match('[a-z]','1aaa') # 没匹配到返回None >>> re.match('[a-z]','a1aaa') <_sre.SRE_Match object; span=(0, 1), match='a'> >>> re.match('[a-z]','a1aaa').group() #group()匹配到的字符串 'a' >>> re.match('[a-z]','a1aaa').span() (0, 1)
re.search 匹配整个字符串,直到找到一个匹配
>>> re.search('[a-z]','1aaa') <_sre.SRE_Match object; span=(1, 2), match='a'>
re.sub 查找替换
re.sub(pattern, repl, string, count=0)
>>> re.sub(r'[^a-z]','*','ab11cd22ef33') 'ab**cd**ef**' >>> re.sub('\D','*','ab11cd22ef33') '**11**22**33'
compile 函数 编译正则表达式。
re.compile(pattern[, flags])
flags:匹配模式 re.I 忽略大小写 re.M 多行模式等
>>> pattern = re.compile(r'\D+') >>> pattern.search('ab-11cd22ef33').group() 'ab-' >>> pattern.search('ab-11cd22ef33',0,2).group() 'ab' >>> >>> pattern.search('ab-11cd22ef33').start() 0 >>> pattern.search('ab-11cd22ef33').end() 3 >>> pattern.search('ab-11cd22ef33').span() (0, 3)
findall 匹配所有符合正则的字符串,以列表形式返回
>>> re.findall('[a-z]','ab11cd22ef33') #匹配所有符合正则的字符串,并返回列表 ['a', 'b', 'c', 'd', 'e', 'f'] >>> re.findall('[a-z]','123456') #没有匹配到则返回空列表 [] >>> pat = re.compile(r'\d+') >>> pat.findall('aa 12 bb34 de') ['12', '34'] >>> pat.findall('aa 12 bb34 de56') ['12', '34', '56'] >>> >>> pat.findall('aa 12 bb34 de56',0,5) ['12']
finditer 类似findall 将结果作为一个迭代器返回
>>> pattern = re.compile(r'\D+') >>> i = pattern.finditer('ab-11cd22ef33') >>> i <callable_iterator object at 0x7f8fc4d38908> >>> for x in i: ... print(x) ... <_sre.SRE_Match object; span=(0, 3), match='ab-'> <_sre.SRE_Match object; span=(5, 7), match='cd'> <_sre.SRE_Match object; span=(9, 11), match='ef'>
split 按照正则匹配的子串将字符串分割并返回列表
>>> re.split(r'\*','a*b*c') ['a', 'b', 'c']