import re if __name__ == '__main__': bt = 'bat|bet|bit' m = re.match(bt, 'bet') if m is not None: result = m.group() print(result) m = re.match(bt, 'batbet') if m is not None: result = m.group() print(result) m = re.match(bt, 'ggbet') if m is not None: result = m.group() print(result) # 控制臺打印出來的結果為: bet bat
從上面的信息來看,python的 re 模塊中的 match方法這種用法只能匹配出字符串開始是否包含指定的部分,而且只讀取返回的結果只有一條數據,不知道大家理解了沒有,沒有理解可以將上面的代碼直接復制運行,當然這句話也不完全對,上面代碼如果換成這樣的話就說的不對了
bt = '(bat).(bet).(bit)' m = re.match(bt, 'batmbetubit') if m is not None: result = m.group(3) print(result)
bt = 'bit' m = re.search(bt, 'hfgkfkjbit') if m is not None: result = m.group() print(result)
re中的search這個方法的就可以從一整句中查詢是否包含需要的部分,而不僅僅的是查找開頭有沒有
a = "123abc456" print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0)) # 123abc456,返回整體 print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1) ) # 123 print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2)) # abc print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(3)) # 456 print("-"*50) m = "(bet)...(bat)" result = re.search(m, "betljhbat") print(result.group(0)) # 返回整體 print(result.group(1)) # 返回bet print(result.group(2)) # 返回bat