在上學的時候有幸讀了一本書,說是一本書,倒不如說是乙個小冊子。這本冊子就是計算機技術大佬ben forta編寫的《正規表示式必知必會》。這本冊子使用簡明又實用的例子,讓我對正規表示式產生了濃厚的興趣。在後期的學習中我發現,正規表示式是真的太強大了,特別是在處理複雜旳文字和表單時,正規表示式極大的讓原本複雜的編碼化成簡單的、易懂的字串。當然,在此之前,你要弄懂以及熟悉正規表示式的相關規則。簡單地說,正規表示式就是用來處理文字的字串。當我們要處理一段文字時,如搜尋、匹配、替換等,
首先,我們可以使用正規表示式語言來定乙個正確的模板,
然後,用這個模板在文字中去匹配。
在python語言中,使用正規表示式需要匯入re模組。
import re
defmain()
:"""選出正確的qq郵箱"""
datas =
]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多次 ...