首先要說一下什麼是正則表達式 :通俗一點來講,正則表達式就是一種字符串匹配的方式罷了,我們平時經常會用到兩個字符串比較,比如說像新用戶註冊,我們輸入註冊的新信息時經常會有書寫不規範的時候,那麼 “正則” 就是用來約束我們的書寫規範。
那麼,在python3中,就有re模塊來表示正則相關啦~
在python3中,我們最最經常用到的就是re.match()函數。
import re
result = re.match(正則表達式,要匹配的字符串)
result.group() #用來返回匹配的整個表達式的字符串
re.match()函數通俗來說就是從正則表達式的第一個字符串開始匹配,直到正則結束,如果該字符串完全匹配則返回True,否則則返回False。
result.group() 則是用來返回匹配的整個表達式的字符串 。
舉個栗子 :re.match()的第一個參數是我們要匹配的字符串
第一個我們用hello來匹配hello world,有一個返回值證明匹配成功
當我們用hello來匹配Hello world的時候,發現沒有返回值,證明匹配不成功
當我們用[Hh]ello world來匹配時,H可以用大寫或小寫均會有返回值,均可匹配成功
瞭解了re.match()之後,那麼就是正則表達式的書寫啦
這裏我們首先要說明一下正則規則 :
轉義字符 |
解釋 |
\d | 匹配任意數字,等價於 [0-9] |
\D | 匹配任意非數字 |
\s | 匹配任意空白字符,等價於 [\t\n\r\f] |
\S | 匹配任意非空字符 |
\w | 匹配字母數字及下劃線 |
\W | 匹配非字母數字及下劃線 |
^ | 匹配字符串的開頭 |
$ | 匹配字符串的末尾 |
. | 匹配任意除了換行符的字符 |
* | 匹配0個或多個的表達式 |
+ | 匹配1個或多個的表達式 |
? | 匹配0個或1個由前面的正則表達式定義的片段 |
a|b | 匹配a或b |
具體這些規則怎麼用呢? ——當然是用來正則匹配呀~ 話不多說上栗子:
例如,\d用於匹配任意數字,那麼我如果想匹配單個數字應該怎麼寫呢?
import re
re.match(r"[1-9]?%d","1").group() #不建議將兩條語句合在一起寫哦,博主小姐姐比較懶,少寫一行是一行~
吶吶吶,小姐姐已經運行好輸出結果了!(在下面哦)
噹噹噹當~我們的1就這樣輸出出來了,什麼?怎麼是個 '1' 這個鬼東西?沒問題,用int強制轉換一下就好啦!這就是與hello world等價的正則表達式啦,小可愛們也可以根據上面表格多多聯繫一些更難一點的,比如說......
咳咳:(1)判斷輸入的手機號是否規範(規定只有 13x )
(2)判斷輸入的用戶名是否規範(允許字母、下劃線開頭,由字母數字下劃線構成,6~16位)
(3)判斷輸入的郵箱是否符合正確的郵箱格式(以163.com爲例)
寶貝們先自己練習哈,不許下翻偷看答案哦
|
|
|
|
|
|
|
|
|
|
|
*********
*******
*****
***
*
那麼我要公佈答案啦:
(1)判斷輸入的手機號是否規範
首先,手機號呢純數字,11位,我規定了只以13*開頭,那麼只需要判斷13後面是不是9位數字就可以啦,難度不大,代碼如下~
import re
def phone():
n=input()
if re.match(r"13\d{9}",n):
print("True")
else:
print("False")
if __name__ == '__main__':
phone()
(2)判斷輸入的用戶名是否規範(允許字母、下劃線開頭,由字母數字下劃線構成,6~16位)
沒什麼好解釋的,條件都已經列在題幹裏了,相信寶寶們也可以摸索着就寫出來了,直接上碼!
import re
def UserName():
n=input()
if re.match(r"^[a-zA-Z][a-zA-Z0-9]{5,15}$",n):
print("True")
else:
print("False")
if __name__ == '__main__':
UserName()
(3)判斷輸入的郵箱是否符合正確的郵箱格式(以163.com爲例)
最後一個就是郵箱的判斷了,前面字母,後面加上@163.com,以$作爲結束符,就OK啦,代碼奉上:
import re
def CheckEmail():
n=input()
if re.match(r"[0-9a-zA-Z_]{0,19}@163.com$",n):
print("True")
else:
print("False")
if __name__ == '__main__':
CheckEmail()
掌握了上面這些,寶寶們對正則表達式是不是有更深的瞭解了呢?如果想深入學習正則表達式請好好繼續學習哦~
希望本文可以幫到大家~
如有錯誤歡迎指正~