正規表示式 程式設計師的「瑞士軍刀」

2021-10-02 10:10:39 字數 3552 閱讀 3062

在上學的時候有幸讀了一本書,說是一本書,倒不如說是乙個小冊子。這本冊子就是計算機技術大佬ben forta編寫的《正規表示式必知必會》。這本冊子使用簡明又實用的例子,讓我對正規表示式產生了濃厚的興趣。在後期的學習中我發現,正規表示式是真的太強大了,特別是在處理複雜旳文字和表單時,正規表示式極大的讓原本複雜的編碼化成簡單的、易懂的字串。當然,在此之前,你要弄懂以及熟悉正規表示式的相關規則。

簡單地說,正規表示式就是用來處理文字的字串。當我們要處理一段文字時,如搜尋、匹配、替換等,

首先,我們可以使用正規表示式語言來定乙個正確的模板,

然後,用這個模板在文字中去匹配。

在python語言中,使用正規表示式需要匯入re模組。

import re

defmain()

:"""選出正確的qq郵箱"""

datas =

["[email protected]"

,"[email protected]"

,"[email protected]"

]for data in datas:

test = re.match(

"[a-za-z0-9]*@qq\.com$"

,data)

if test:

content = test.group(

)# 取出test的值

print

(content)

# 若存在返回值就輸出

if __name__ ==

'__main__'

: main(

)

在上段**中 [a-za-z0-9]*@qq\.com$ 就是一串正規表示式。

(如果看不懂,請閱讀全篇文章後再回來理解)

使用re模組的match函式可以得到乙個符合正規表示式的物件

如果沒有符合正規表示式的物件,就會返回空(並不會報錯),

所以,博主在學習正規表示式的時候總結了一句話:

沒有錯誤的正規表示式,只有不正確的正規表示式。

執行上段**,結果如下圖所示。

.匹配任何乙個單個的字元

匹配 中列舉的字元

^匹配字串開頭 / 取非匹配

\d匹配乙個數字

\d匹配乙個非數字

\s匹配空白,即空格鍵、tab鍵

\s匹配非空白

\w匹配任何乙個字母數字字元或下劃線(大小寫均可)

\w匹配任何乙個非字母數字字元或下劃線

匹配 {} 前乙個字元出現n次

匹配 {} 前乙個字元出現從m次到n次

*匹配零個或多個字元(可有可無)

+匹配乙個或多個字元(至少乙個)

?匹配零個或乙個字元

*?*的懶惰型元字元

+?+的懶惰型元字元

?{}的懶惰型元字元

\轉義字元

\f換頁符

\n換行符

\r回車符

\t水平製表符(tab鍵)

\v垂直製表符

\b單詞限定符

()子表示式

|邏輯或

(?p)子表示式取別名

(?p=name)引用別名為name的子表示式

函式名區別

match預設從字串開頭開始匹配字串

search不會從頭匹配,直接找第乙個符合正規表示式的字串

findall找出所有符合正規表示式要求的字串

函式名作用

sub替換,例 re.sub(「正規表示式」,「a」,「b」),將b中符合正規表示式的字串替換成a,a處可巢狀函式使用

split切割,例re.split(「正規表示式」,「a」),將a中所有符合正規表示式的地方切割,返回乙個元素列表

當在字元集合裡使用的時候,像.+這樣的字元將被解釋為普通字元,不需要被轉義。

\b匹配得是乙個位於能夠用來構成單詞的字元(字母、數字和下劃線,也就是與\w相匹配的字元)和乙個不能用來構成單詞的字元(也就是與\w相匹配的字元)之間。^ 元字元作用於里並緊跟[的後面時,發揮取非匹配的作用。沒有作用於時,發揮匹配字串開頭的作用。子表示式()作用於重複匹配,超好用。

「 \r\n 」,作業系統文字結束的標籤。

後續補充…

黑馬程式設計師 正規表示式

asp.net android io開發s net培訓 期待與您交流!正規表示式 定義 其實是用來操作字串的一些規則。好處 正則的出現,對字串的複雜操作變得更為簡單。特點 將對字串操作的 用一些符號來表示。只要使用了指定符號,就可以呼叫底層的 對字串進行操作。符號的出現,簡化了 的書寫。弊端 符號的...

黑馬程式設計師 正規表示式

正規表示式 某個描述字串物件是不是跟符合我設定的語法規則。public class test w com org com cn 這個字串表示 在大小寫英文,和數字組合的字串 長度為7 13之間 中間有 隔開郵箱型別,郵箱型別長度3 5之間,尾部字尾 com org 或 com.cn system.o...

黑馬程式設計師 正規表示式

asp.net android ios開發 net培訓 期待與您交流!正規表示式 a za z 代表其中的乙個 表否 為任意,當用來split分是要注意得 d和 0 9 相同,d和 0 9 相同 w單詞字元 a a z 0 9 w為非單詞字元 w x?代表前面可有1次,可沒有 x 為x0次或x多次 ...