re.search 掃描整個字符串並返回第一個成功的匹配。python
函數語法:正則表達式
re.search(pattern, string, flags=0)
函數參數說明:函數
參數 | 描述 |
---|---|
pattern | 匹配的正則表達式 |
string | 要匹配的字符串。 |
flags | 標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。 |
匹配成功re.search方法返回一個匹配的對象,不然返回None。spa
咱們可使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式。 對象
匹配對象方法 | 描述 |
---|---|
group(num=0) | 匹配的整個表達式的字符串,group() 能夠一次輸入多個組號,在這種狀況下它將返回一個包含那些組所對應值的元組。 |
groups() | 返回一個包含全部小組字符串的元組,從 1 到 所含的小組號。 |
例子:blog
import re print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配 print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配 (0, 3) (11, 14)
例子2:字符串
import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.*) are (.*?) .*',line,re.M|re.I) if searchObj: print("searchObj.group() :",searchObj.group()) print("searchObj.group(1):",searchObj.group(1)) print("searchObj.group(2):",searchObj.group(2)) else: print("Nothing found!!")
輸出:string
searchObj.group() : Cats are smarter than dogs searchObj.group(1): Cats searchObj.group(2): smarter
re.match只匹配字符串的開始,若是字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。table
import re line = "Cats are smarter than dogs"; matchObj = re.match(r'dogs',line,re.M|re.I) if matchObj: print("match --> matchObj.group():", matchObj.group()) else: print("NO match!!") matchObj = re.search(r'dogs' ,line, re.M|re.I) if matchObj: print("search --> matchObj.group():" ,matchObj.group()) else: print("NO match!!")
輸出:class
NO match!! search --> matchObj.group(): dogs