天天看點

python進階之正規表達式四、正規表達式 

四、正規表達式

正規表達式就是記錄文本規則的代碼

在python中使用正規表達式需要先導入re子產品

4.1比對單個字元

python進階之正規表達式四、正規表達式 

如:match_obj = re.match("t.o", "two")

if match_obj:

# 擷取比對結果

print(match_obj.group())

else:

print("比對失敗")

4.2比對多個字元

python進階之正規表達式四、正規表達式 

4.3比對開頭結尾

python進階之正規表達式四、正規表達式 

4.4比對分組

python進階之正規表達式四、正規表達式 

如:

# <html><h1>www.itcast.cn</h1></html>

match_obj = re.match("<([a-zA-Z1-6]+)><([a-zA-Z1-6]+)>.*</\\2></\\1>", "<html><h1>www.itcast.cn</h1></html>")

if match_obj:

print(match_obj.group())

else:

print("比對失敗")

4.5re子產品的進階用法

(1)search

根據正規表達式查找指定資料,隻查找一次結果

格式:re.search("正規表達式",“要比對的字元串”)

(2)findall

根據正規表達式查找指定資料,會全部查找,會傳回一個結果清單

格式:re.findall("正規表達式","要比對的字元串")

(3)sub

根據正規表達式查找指定資料,将比對到的資料進行替換,預設會全部替換,可用count=num進行指定替換次數

格式:re.sub("正規表達式","替換後的資料","要比對的字元串",count=1)

如:

# match_obj-》 sub函數比對完成以後會自動傳入該參數

def add(match_obj):

# 擷取比對結果

value = match_obj.group()

result = int(value) + 1

# 傳回資料類型必須是字元串

return str(result)

value = re.sub("\d+", add, "閱讀數:11")

print(value)

(4)split

根據正規表達式比對,進行切割字元串,并傳回一個清單,預設全部分割,可用maxsplit=num進行指定分割次數

格式:re.split("正規表達式", "要比對的字元串", maxsplit=1)

4.6貪婪和非貪婪

(1)貪婪:根據正規表達式盡量多比對資料,python裡面正則預設是貪婪的

提示:如果以後開發過程中使用正則比對資料比預想的資料要多,要想到非貪婪模式

(2)非貪婪:根據正規表達式盡量少比對資料

提示:?後面的資料不跟前面的正規表達式比對,留給後面的代碼進行比對

如:

match_obj = re.search(r"https?://.*?\.jpg", my_str)

if match_obj:

    # 擷取比對結果對象

    print(match_obj.group())

else:

    print("比對失敗")

python進階之正規表達式四、正規表達式 

4.7r的作用

r:表示原始資料,不需要對反斜杠進行轉義,r裡面的反斜杠是一個真正反斜杠

建議:以後使用正規表達式可以統一加上r

轉義字元:用\來對字元進行轉義,如想查找*,就得寫成\*

繼續閱讀