1. 程式人生 > >python中的match和search的區別

python中的match和search的區別

對比

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")