基本上每個語言都可以操作正規表示式,正規表示式強大文字匹配能力對資料處理有著極大地優勢。
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...