python 正規表示式

2022-05-08 15:21:12 字數 1554 閱讀 6956

基本上每個語言都可以操作正規表示式,正規表示式強大文字匹配能力對資料處理有著極大地優勢。

python 也有正規表示式的模組(re 模組),自帶正規表示式引擎。

正規表示式工作流程:

1,首先根據表示式產生表示式物件,物件包括如何匹配資料資訊

2,在將物件匹配文字,果每乙個字元都能匹配,則匹配成功;一旦有匹配不成功的字元則匹配失敗。

3,返回我們所需要的內容(分組,索引,以及文字)。

'''

import re  匯入re模組,可以使用python正則

re.match(r('正則', '資料')) 返回的是物件

re.match(r('正則'), ('資料')).group() 呼叫group() 方法返回匹配的資料

match() 是從開頭匹配,第乙個字母匹配不上就會停止匹配,丟擲異常

re.search(r'正則', '資料').group() 一直尋找下去,直至返回匹配到的內容

re.findall(r'正則','資料') 返回的是列表,匹配所有的資料,都會返回。

re.sub(r"\d+", '998', "python = 997") 將匹配到的資料替換為'998'

re.search(r'hello[ab]', 'helloworld')  表示匹配乙個字元, 如果下乙個字元是a或者b就會返回, 不是就會拋異常.

re.search(r'hello[0-9]', 'helli1world') 表示匹配乙個字元,是數字

[a - z] 表示匹配乙個字元必須是小寫

[a - z] 表示匹配必須是大寫

re.search(r'hello[^a-z]', 'helloworld') ^ 表示取反, 即不屬於a - z

. 表示任意乙個字元,除了'\n'

+   表示匹配1次或者多次,至少一次

.*   表示匹配任意個,*前面是量詞。

\d 表示匹配數字,乙個數字 \d 匹配三個數字 \d + 表示匹配至少乙個數字

\s 表示匹配空白 不是空格

\w 等價於[a - za - z1 - 9](三者連續寫在一起,表示與的關係) 在pthon3 之中還包括漢字

\w 匹配四個字元\w + 表示乙個 \w 表示匹配4 - 20個字元

匹配前乙個字元,出現m-n次

注意理解 ^ 表示開始()第乙個字元開始 $ 表示結束 match預設帶有

r 這是少寫'\',其餘的改轉義,都要轉義

'''

python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配盡可能多的字元;

非貪婪則相反,總是嘗試匹配盡可能少的字元。

在"*","?","+",""後面加上?,使貪婪變成非貪婪

re.match(r"

aa(\d+?)

","aa2343ddd

").group(1) #

返回'2343'

re.match(r"

aa(\d+?)

","aa2343ddd

").group(1) #

返回 '2'

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...