python中的match和search的區別
阿新 • • 發佈:2018-12-13
對比
match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]):
- 這個方法將從string的pos下標處起嘗試匹配pattern:
- 如果pattern結束時仍可匹配,則返回一個Match物件
- 如果匹配過程中pattern無法匹配,或者匹配未結束就已到達endpos,則返回None。
- pos和endpos的預設值分別為0和len(string)。 注意:這個方法並不是完全匹配。當pattern結束時若string還有剩餘字元,仍然視為成功。想要完全匹配,可以在表示式末尾加上邊界匹配符’$’。
search(string[, pos[, endpos]]) | re.search(pattern, string[, flags]):
- 這個方法從string的pos下標處起嘗試匹配pattern
- 如果pattern結束時仍可匹配,則返回一個Match物件
- 若無法匹配,則將pos加1後重新嘗試匹配,直到pos=endpos時仍無法匹配則返回None。
- pos和endpos的預設值分別為0和len(string))
總結
match()
從指定的位置匹配到結尾,必須開頭一模一樣的對應,search()
也是在指定的位置匹配到結尾,但是,只要在這個區間裡有匹配就行,不用嚴格的限制開頭一一對應,具體可以看例項:
import re pattern = re.compile(r'hello.*!') # 開頭有個'a',match()匹配不上,但是search()可以匹配上 match = pattern.match('ahello, peter! How are you?') match1 = pattern.search('ahello, peter! How are you?') if match: print(match.group()) else: print("None match") if match1: print(match1.group()) else: print("None match1")