Python3 正則表達式 re.search函數

re.search方法

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與re.search的區別

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
相關文章
相關標籤/搜索