1. compile 编译后执行速度更快,findall 返回匹配列表
>>> import re
>>> r=r'a[bcd]e'
>>> p=re.compile(r)
>>> print p.findall('abe,ace,ade,afe')
['abe', 'ace', 'ade']
>>> print re.findall(r,'abe,ace,ade,afe')
['abe', 'ace', 'ade']
>>>
2. finditer 返回匹配迭代器
>>> print re.finditer(r,'abe,ace,ade,afe')
<callable-iterator object at 0x02C5CA90>
3. match 匹配字符串开头,返回第一个匹配的内容
>>> r=r'(a[bcd]e)' #注意使用match和search时需要分组
>>> res=re.match(r,'abe,ace,ade,afe')
>>> print res.groups()
('abe',)
>>> res=re.match(r,'afe,abe,ace,ade')
>>> print res
None
>>>
4. search 匹配字符串全文,返回第一个匹配的内容
>>> res=re.search(r,'afe,abe,ace,ade')
>>> print res
<_sre.SRE_Match object at 0x02C5EE60>
>>> print res.groups()
('abe',)
>>>
我们可以使用group(num)或 groups()匹配对象函数来获取匹配表达式。
group(num=0) 匹配的整个表达式的字符串,group()可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从1到所含的小组号。
import re str = "Welcome to Python world!" r=r'(.*) to (.*?) .*' matchObj = re.match(r,str) if matchObj: print "matchObj.groups() : ", matchObj.groups() print "matchObj.group(1,2) : ", matchObj.group(1,2) print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2) else: print "No match!!"
>>>
matchObj.groups() : ('Welcome', 'Python')
matchObj.group(1,2) : ('Welcome', 'Python')
matchObj.group() : Welcome to Python world!
matchObj.group(1) : Welcome
matchObj.group(2) : Python
>>>
5. sub 字符串正则替换,返回替换字符串
>>> re.sub(r'a..d','python','abcd,aefdq,qanmd')
'python,pythonq,qpython'
>>> re.sub(r'a..d','python','abcd,aefdq,qanmd',2) #指定替换次数
'python,pythonq,qanmd'
>>>
6. subn 字符串正则替换,返回元组(替换字符串,替换次数)
>>> re.subn(r'a..d','python','abcd,aefdq,qanmd')
('python,pythonq,qpython', 3)
>>>
7. split 返回切割后的列表
>>> re.split(r'\+',"12+34*56/78")
['12', '34*56/78']
>>> re.split(r'[\+\-\*\/]',"12+34*56/78")
['12', '34', '56', '78']
>>>