python正規表示式函式match()和search()的區別詳解

pythontab發表於2013-02-01

match()和search()都是python中的正則匹配函式,那這兩個函式有何區別呢?

match()函式只檢測RE是不是在string的開始位置匹配, search()會掃描整個string查詢匹配, 也就是說match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none

例如:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
 
import re
 
text = 'pythontab'
m = re.match(r"\w+", text) 
if m:  
    print m.group(0) 
else: 
    print 'not match'


結果是:pythontab

而:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
#
 
import re
 
text = '@pythontab'
m = re.match(r"\w+", text) 
if m:  
    print m.group(0) 
else: 
    print 'not match'

結果是:not match

search()會掃描整個字串並返回第一個成功的匹配

例如:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
#
 
import re
 
text = 'pythontab'
m = re.search(r"\w+", text) 
if m:  
    print m.group(0) 
else: 
    print 'not match'

結果是:pythontab

那這樣呢:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
#
 
import re
 
text = '@pythontab'
m = re.search(r"\w+", text) 
if m:  
    print m.group(0) 
else: 
    print 'not match'

結果是:pythontab


相關文章