點擊上方"碼農飛哥",選擇"設為星標",
做積極的人,而不是積極的廢人
您好,我是碼農飛哥,感謝您閱讀本文,歡迎一鍵三連哦。
😁 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的格式分為兩個部分: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())
用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(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函數用於找出所有滿足條件的,返回的是一個列表。
text = "蘋果是$99元,橘子是$20元"
ret = re.findall('\$\d+', text)
print(ret)
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函數是用於分割匹配的字符串
text = "碼農飛哥,好好加油"
ret = re.split('\W', text)
print(ret)
對於一些經常要用到的正則表達式,可以使用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. 回復 【脫單】:即可獲得脫單秘籍