用正則表達式校驗手機號,郵箱就是流弊【python爬蟲入門進階】(08)

2021-12-17 碼農飛哥

點擊上方"碼農飛哥",選擇"設為星標",

做積極的人,而不是積極的廢人

您好,我是碼農飛哥,感謝您閱讀本文,歡迎一鍵三連哦。
😁 1. 社區逛一逛,周周有福利,周周有驚喜。碼農飛哥社區,飛躍計劃
💪🏻 2. Python基礎專欄,基礎知識一網打盡。 Python從入門到精通
❤️ 3. Ceph實戰,從原理到實戰應有盡有。 Ceph實戰
❤️ 4. Java高並發編程入門,打卡學習Java高並發。 Java高並發編程入門
本文重點:這篇文章主要學習正則表達式以及re模塊的使用。
關注下方公眾號,眾多福利免費嫖;加我VX進群學習,學習的路上不孤單

文章目錄

說在前面

驗證手機號

驗證郵箱

驗證url

驗證身份證號

轉義字符和原生字符

對\n 進行轉移

group分組

find_all 函數

sub 用來替換字符串

split函數

compile

總結

粉絲專屬福利

說在前面

上一篇文章我們主要介紹了正則表達式的各種語法。學好正則表達式,啥難匹配的內容都給我匹配上【python爬蟲入門進階】(07) 還沒看的小夥伴趕緊去看看哦!!!這篇文章主要將介紹正則表達式的一些實戰小案例。比如:用正則表達式校驗郵箱,手機號等等。

驗證手機號

手機號的格式一般是首位是1,第二位是34578中間的任意一個數,最後9位是隨機數字。所以,他的正則表達式是:1[34578]\d{9}

text = "158523026956"
ret = re.match('1[34578]\d{9}', text)
print(ret.group())

驗證郵箱

郵箱的格式比較多,但是基本的格式可以分為三塊:ya09322133@qq.com
第一部分是 @符號前面是字母或者數字,所以這部分就是\w+,
第二部分是@符號之後. 號之前這部分一般是a-z之間的字母或者數字,所以這部分的表達式是:[a-z0-9]+。
最後一部分就是**.**符號之後的部分,這部分就是a-z之間的字母,所以這部分的表達式是[a-z]+。
所以,最終的表達式是:\w+@[a-z0-9]+\.[a-z]+

text = "ya09322133@qq.com"
ret = re.match('\w+@[a-z0-9]+\.[a-z]+', text)
print(ret.group())

驗證url

url的格式分為兩個部分:https://blog.csdn.net/u014534808
第一部分是::// 之前的部分,這部分一般是以http,https或者ftp。所以,這部分的表達式是:http|https|ftp
第二部分是::// 之後的部分,這部分的要求就是不能以空白字符開頭或者以\n,\t 等開頭。所以,這部分的表達式是:[^\s]+

text = "https://blog.csdn.net/u014534808"
ret = re.match('(http|https|ftp)://[^\s]+', text)
print(ret.group())

驗證身份證號

身份證號有一個標準的格式,如:34492618821223401x 。它的位數一共是18位,前面17位都是數字。最後一位的話可能是數字也可能是x。所以,驗證身份證的表達式可以寫為:\d{17}[\dxX]。

text = "34492618821223401x"
ret = re.match('\d{17}[\dxX]', text)
print(ret.group())

轉義字符和原生字符

在正則表達式中,有些字符是有特殊意義的字符,因此如果要匹配這些字符,那麼久必須要使用反斜槓進行轉義。比如:** 代表以...結尾,如果想要匹配**∗∗代表以...結尾,如果想要匹配∗∗,那麼就必須使用\$ ,示例代碼如下:

import re
text = "好好學習$天天向上"
ret = re.search('\$\w+', text)
print(ret.group())

對\n 進行轉移

用python的方式可以寫成r'\n'

用正則表達式的方式可以寫成\\n。

text = '\\n'
# \\==>\
# \\\\n====>\n
ret=re.match('\\\\n',text)
print(ret.group())


或者

text = '\\n'
# r修飾的就是原生字符串
ret=re.match(r'\\n',text)
print(ret.group())

group分組

在正則表達式中,可以對過濾到的字符串進行分組,分組使用圓括號()的方式。

group: 和group(0) 是等價的,返回的是整個滿足條件的字符串

groups : 返回的是裡面的子組,索引從1開始。

group(1) :返回的是第一個子組,可以傳入多個。

text = "蘋果是$99元,橘子是$20元"
ret = re.search('.*(\$\d+).*(\$\d+)', text)
print(ret.group())
print(ret.group(1))
print(ret.group(2))
print(ret.groups())

find_all 函數

find_all函數用於找出所有滿足條件的,返回的是一個列表。

text = "蘋果是$99元,橘子是$20元"
ret = re.findall('\$\d+', text)
print(ret)

sub 用來替換字符串

sub 用來替換字符串,將匹配的字符串替換成其他字符串。

html = """
<div>
<ul>
<li><a href="link1.html">你 item</a></li>
<li><a href="link2.html">second item</a></li>
<li><a href="link3.html"><span>third item</span></a></li>
<li><a href="link4.html">fourth item</a></li>
<li><a href="link5.html">fifth item</a></li>
</ul>
</div>

"""
ret = re.sub("<.+?>", "", html)
print(ret)

split函數

split函數是用於分割匹配的字符串

text = "碼農飛哥,好好加油"
ret = re.split('\W', text)
print(ret)

compile

對於一些經常要用到的正則表達式,可以使用compile進行編譯,後期再使用的時候可以直接拿來使用,執行效率要更快,而且compile還可以指定 flag=re.VERBOSE,在寫正則表達式的時候可以做注釋,示例代碼如下:

text = "碼農飛哥,身高178.5,正是大好年華"
r = re.compile('\d+\.?\d+')
ret = re.search(r, text)
print(ret.group())


添加注釋

text = "碼農飛哥,身高178.5,正是大好年華"
r = re.compile(r"""
\d+ # 小數點前面的數字
\.? #小數點本身
\d* #小數點後面的數字
""",re.VERBOSE)
ret = re.search(r, text)
print(ret.group())

總結

本文詳細介紹了正則表達式的使用,希望對讀者朋友們有所幫助。

                   

 關注公眾號,免費拿資源

                   

0. 回復 【脫單】:即可獲得脫單秘籍
1. 回復 【軟考】:即可免費獲取全套軟考資料,包過
2. 回復【面試題】:即可獲取熱門的Java面試題,超值
3. 回復【學習資料】:即可獲取50G的學習乾貨
4. 回復【並發編程】:即可獲得並發編程專欄的源碼
5. 回復 【Python】: 即可獲得Python專欄的源碼

相關焦點

  • 妙用正則表達式--Python中的re模塊
    Python中的re模塊可以方便地引入正則表達式。利用正則表達式,我們可以對文本內容進行精確快捷地匹配和提取。與Stata相比,正則表達式的元字符是通用的,不同的是函數。re庫中有若干個函數各司其職,在上一篇推文《Python標準庫re:正則表達式》中我們介紹了re庫中的三個常用函數,現在小編將從實用的角度再介紹幾個常用的函數。
  • CSV文件操作起來還挺方便的【python爬蟲入門進階】(10)
    Python從入門到精通❤️ 3. Ceph實戰,從原理到實戰應有盡有。 Ceph實戰❤️ 4. Java高並發編程入門,打卡學習Java高並發。 Java高並發編程入門本文重點:這篇文章主要學習正則表達式以及re模塊的使用。
  • 5分鐘速覽python正則表達式常用函數
    本文不過多展開正則表達式相關語法,僅簡要介紹python中正則表達式常用函數及其使用方法,以作快速查詢瀏覽。Re模塊是python的內置模塊,提供了正則表達式在python中的所有用法,默認安裝位置在python根目錄下的Lib文件夾(如 ..\Python\Python37\Lib)。
  • 站長在線零基礎Python完全自學教程20:在Python中使用正則表達式完全解讀
    如果要匹配的字符串可以出現在字符串的任意部分,那麼可以直接寫成:One這樣,兩個字符串就都可以匹配了。20.1.2、元字符元字符就是在正則表達式中具有特殊意義的專用字符。剛才我們所說的「^」和「$」就是元字符,在Python有下面常用元字符:.、\w、\W、\s、\S、\d、\D、\b、^、$。各種元字符及其說明如下:.
  • python測試開發django-104.form表單正則校驗(RegexValidator)
    max_length': '密碼不能大於16位字符', })initial 默認值initial 設置輸入框默認值,相當於input標籤value屬性help_text顯示輸入框幫助信息,在標籤右側顯示,模板中引用{{ field.help_text }}<form action=""
  • Python爬蟲超詳細講解(零基礎入門,老年人都看的懂)
    講解我們的爬蟲之前,先概述關於爬蟲的簡單概念(畢竟是零基礎教程)爬蟲網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人)就是模擬瀏覽器發送網絡請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路信息的程序。原則上,只要是瀏覽器(客戶端)能做的事情,爬蟲都能夠做。
  • 之前寫參數校驗(Validator),差點被勸退...
    ,flag=標誌的模式)CharSequence子類型(如String)驗證註解的元素值是Email,也可以通過regexp和flag指定自定義的email格式@Pattern(regexp=正則表達式,flag=標誌的模式)String,任何CharSequence的子類型驗證註解的元素值與指定的正則表達式匹配@Valid任何非原子類型指定遞歸驗證關聯的對象如用戶對象中有個地址對象屬性,如果想在驗證用戶對象時一起驗證地址對象的話
  • 13-python爬蟲之JSON操作
    Json模塊提供了四個功能:dumps、dump、loads、load,用於字符串 和 python數據類型間進行轉換https://docs.python.org/zh-cn/3/library/json.htmlhttp://tool.oschina.net/codeformat/json1. json.loads()實現:json字符串
  • C++正則表達式
    不同點:前者要求完全匹配,後者要求子串匹配即可;下面以regex_match為例,regex_search的寫法與之相同,故不贅述。"; regex e("([[:w:]]+)@([[:w:]]+)\.com"); cout << regex_replace(str, e, "$1 is on $2\n", regex_constants::format_no_copy); // 除了捕捉到的組以外,其他的東西均捨棄 return 0;}運行結果:
  • python爬蟲之selenium--Xpath定位
    python爬蟲之selenium--Xpath定位前言前面介紹過了七種定位方式,今天來介紹最後一種,也是最強大,本人最常用的定位方式xpath
  • 郵箱帳號反查電話號碼可行性研究
    但原帖主要針對美國的郵箱和手機用戶,那國內的用戶用類似的思路可以做嗎?懷著一點小好奇心我嘗試著使用平時積累的開源情報收集技巧來實驗一把。原帖的實現方法原貼的實現方法是根據國外的一些網站,如PayPal、eBay、Yahoo等網站來進行密碼重置,使用郵箱帳號獲取電話號的多位數字。
  • 常見郵箱攻擊流程簡述
    由於google、baidu、bing等搜尋引擎的爬蟲十分強大,且都支持統一的高級搜索語法,所以可以收集到很多有用的信息。而網盤作為一個共享文件的工具,也是信息洩露的重災區。這裡就通過搜尋引擎+網盤的郵箱收集思路:site:vdisk.weibo.com intext:阿里巴巴|通訊錄,搜索到了相應組織的通訊錄信息,其中也包含大量的郵箱信息。
  • Python爬蟲從入門到精通(2): requests庫詳解,cookie操作與實戰
    Python的第三方requests庫是基於urllib編寫的,但是比urllib庫強大,非常適合爬蟲的編寫,可以幫我們節省很多工作。
  • 乾貨|Python滲透測試工具庫
    /ZVulDrillvulapps漏洞練習平臺:https://github.com/Medicean/VulAppsdvwa漏洞練習平臺:https://github.com/RandomStorm/DVWA資料庫注入練習平臺 :https://github.com/Audi-1/sqli-labs用node
  • python:pandas入門詳細教程
    ,對pandas中的一列字符串進行通函數操作,而且自帶正則表達式的大部分接口常用的數據分析與統計功能,包括基本統計量、分組統計分析等集成matplotlib的常用可視化接口,無論是series還是dataframe,均支持面向對象的繪圖接口正是由於具有這些強大的數據分析與處理能力,pandas還有數據處理中"瑞士軍刀"的美名。
  • 一文看懂Python列表表達式及高階函數如lamda, zip, enumerate, map和filter方法.
    方法是python學習,面試和工作的必備技能。正1.統計字符串列表中每個字符串的長度>>> words = ['abc','defg','I love python', 'Django']>>> len_list = [ len(word) for word in words ]>>> print(len_list)[3, 4, 13,
  • python數據科學系列:pandas入門詳細教程
    ,對pandas中的一列字符串進行通函數操作,而且自帶正則表達式的大部分接口常用的數據分析與統計功能,包括基本統計量、分組統計分析等集成matplotlib的常用可視化接口,無論是series還是dataframe,均支持面向對象的繪圖接口正是由於具有這些強大的數據分析與處理能力,pandas還有數據處理中"瑞士軍刀"的美名。
  • 小白爬蟲第二彈之健壯的小爬蟲
    上次教大家寫了一個下載www.mzitu.com全站圖片的小爬蟲練手、不知道大家消化得怎麼樣?《小白爬蟲第一彈之抓取妹子圖》大家在使用的時候會發現,跑著跑著 就斷掉了!報錯了啊!丟失連接之類的。倖幸苦苦的抓了半天又得從頭來,心累啊!這就是網站的反爬蟲在起作用了,一個IP訪問次數過於頻繁就先將這個IP加入黑名單,過一會兒再放出來。
  • python測試開發django-11.模型models詳解
    6、models.DateTimeField  日期類型 datetime  同DateField的參數7、models.Decimal  十進位小數類型= decimal  必須指定整數位max_digits和小數位decimal_places8、models.EmailField  字符串類型(正則表達式郵箱)=varchar  對字符串進行正則表達式
  • Python數據科學系列:Pandas 入門詳細教程
    ,對pandas中的一列字符串進行通函數操作,而且自帶正則表達式的大部分接口常用的數據分析與統計功能,包括基本統計量、分組統計分析等集成matplotlib的常用可視化接口,無論是series還是dataframe,均支持面向對象的繪圖接口正是由於具有這些強大的數據分析與處理能力,pandas還有數據處理中"瑞士軍刀"的美名。