1.re.search函數
re.search 掃描整個字符串並返回第一個成功的匹配,如果匹配失敗search()就返回None。
(1)函數語法:
re.search(pattern, string, flags=0)
函數參數說明:
pattern 匹配的正則表達式
string 要匹配的字符串
flgs 標志位,用於控制正則表達式的匹配方式
我們可以使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式。
group(num=0) 獲取匹配結果的各個分組的字符串,group() 可以一次輸入多個組號,此時返回一個包含那些組所對應值的元組。
groups() 返回一個包含所有分組字符串的元組。
注意:如果未匹配成功,search()返回值為None,此時再使用group()、groups() 方法會報錯。
應該先獲取匹配對象,然后判斷匹配對象是否非空,當非空時在使用group()、groups() 方法獲取匹配結果。見實例2
(2)實例
例1
print(re.search(r'How', 'How are you').span()) # 在起始位置匹配
print(re.search(r'are', 'How are you').span()) # 不在起始位置匹配
以上輸出結果為:
(0, 3) (4, 7)
例2
import re content = 'Hi zeke,how old are you' result = re.search(r'\d+' , content) if result: print result.group() else: print 'No match!' rs = re.search(r'\w{4}' , content) if rs: print rs.group() else: print 'No match!'
以上執行結果如下:
No match!
zeke
2.pattern.search方法
(1) 函數語法
pattern.search( string, pos=0, endpos=len(string))
函數作用:
這個方法將在字符串string的pos位置開始 嘗試匹配pattern(pattern就是通過 re.compile()方法編譯后返回的對象),如 果pattern匹配成功,無論是否達到結束位 置endpos,都會返回一個匹配成功后的Match對象;
如果匹配不成功,或者 pattern未匹配結束就達到endpos,則返回 None。
函數參數說明:
string:被匹配的字符串
pos:匹配的起始位置,可選,默認為0
endpos:匹配的結束位置,可選,默認為 len(string)
3. re.search和pattern.search區別
re.search方法與pattern.search()方法 區別在於,它不能指定匹配的區 間pos和endpos兩個參數
4. re.match方法與re.search方法的區別
re.match只匹配字符串的開始,如果字符串開始不符合正則表達式, 則匹配失敗,並返貨None;
re.search匹配整個字符串, 直到找到一個匹配,如果整個字符串都沒匹配到,則返回None。