基礎 Python3 正則表達式

首先要說一下什麼是正則表達式 :通俗一點來講,正則表達式就是一種字符串匹配的方式罷了,我們平時經常會用到兩個字符串比較,比如說像新用戶註冊,我們輸入註冊的新信息時經常會有書寫不規範的時候,那麼 “正則” 就是用來約束我們的書寫規範。

 

那麼,在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()

掌握了上面這些,寶寶們對正則表達式是不是有更深的瞭解了呢?如果想深入學習正則表達式請好好繼續學習哦~

 

希望本文可以幫到大家~

如有錯誤歡迎指正~

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章