Python正則表達(dá)式的小練習(xí)分享
匹配網(wǎng)址 url 的小練習(xí)
定義一個(gè)函數(shù),判斷 url 是否是一個(gè)正常的地址。
定義一個(gè)函數(shù),只獲取 url 的域名部分
import re url_ture = "https://www.csdn.net/" url_false = "ftp://110.110.110.110:8080" def check_url(url): result = re.findall('[a-zA-z]{4,5}://\w*\.*\w+\.\w+', url) if not len(result) == 0: return 'url 是一個(gè)合法的網(wǎng)站地址' else: return 'url 是一個(gè)不合法的網(wǎng)站地址' def get_url(url): result = re.findall('https://(\w*\.*\w+\.\w+)', url) if not len(result) == 0: return result[0] else: return [] if __name__ == '__main__': result_true = check_url(url_ture) print(result_true) result_false = check_url(url_false) print(result_false) result_url_01 = check_url("http://csdn.com") print(result_url_01) result_url_02 = check_url("https://www.csdn.com") print(result_url_02) get_url_true = get_url(url_ture) print(get_url_true) get_url_false = get_url(url_false) print(get_url_false)
執(zhí)行結(jié)果如下:
匹配郵箱地址的小練習(xí)
定義一個(gè)函數(shù),獲取郵箱的地址。
import re email = "Neo@protonmail.com" def get_email(email): # result = re.findall('[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[a-zA-Z]+', email) # 這樣寫(xiě)比較復(fù)雜,可以使用通配符 result = re.findall('.+@.+\.[a-zA-Z]', email) return result if __name__ == '__main__': get_email = get_email(email) print(get_email) # >>> 執(zhí)行結(jié)果如下: # >>> ['Neo@protonmail.com']
獲取前端代碼內(nèi)容的練習(xí)
接下來(lái)做一個(gè)稍微復(fù)雜一些的練習(xí):
定義一個(gè)函數(shù),獲取一段前端代碼中雙引號(hào)包裹的內(nèi)容。
定義一個(gè)函數(shù),獲取該段前端代碼中所有的雙引號(hào)包裹的內(nèi)容
import re html = ('<div class="s-top-nav" style="display:none;">' '</div><div class="s-center-box"></div>') # 這是前端代碼,暫時(shí)不用理解是什么意思 def get_html_data(html): re_g = re.compile('style="(.*?)"') # 非貪婪模式獲取 style 標(biāo)簽的內(nèi)容 result = re_g.findall(html) return result def get_all_data_html(html): re_g = re.compile('="(.+?)"') result = re_g.findall(html) return result if __name__ == '__main__': get_html_data = get_html_data(html) print(get_html_data) get_all_data_html = get_all_data_html(html) print(get_all_data_html) # >>> 執(zhí)行結(jié)果如下: # >>> ['display:none;'] # >>> ['s-top-nav', 'display:none;', 's-center-box']
通過(guò)獲取前端代碼標(biāo)簽內(nèi)容的例子,我們可以看出,只要找到字符串的規(guī)律,通過(guò)這些規(guī)律去定義正則匹配的規(guī)則就可以拿到想要的信息。
OK,今天的練習(xí)就到這里了。正則表達(dá)式最最核心最最重要的就是匹配的相關(guān)操作, findall 與 search 函數(shù)就是常用的兩個(gè)函數(shù),以及其它函數(shù)的匹配規(guī)律都是完全相同的,只不過(guò)它們返回的值會(huì)存在著不同,或者說(shuō)這些函數(shù)的使用場(chǎng)景存在著一定的區(qū)別,但是返回的結(jié)果幾乎都是相同的。
到此這篇關(guān)于Python正則表達(dá)式的小練習(xí)分享的文章就介紹到這了,更多相關(guān)Python正則表達(dá)式練習(xí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實(shí)例講解
今天小編就為大家分享一篇python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06python+openCV對(duì)視頻進(jìn)行截取的實(shí)現(xiàn)
這篇文章主要介紹了python+openCV對(duì)視頻進(jìn)行截取的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python爬蟲(chóng)使用requests發(fā)送post請(qǐng)求示例詳解
這篇文章主要介紹了python爬蟲(chóng)使用requests發(fā)送post請(qǐng)求示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08基于python的docx模塊處理word和WPS的docx格式文件方式
今天小編就為大家分享一篇基于python的docx模塊處理word和WPS的docx格式文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python xlsxwriter庫(kù)生成圖表的應(yīng)用示例
這篇文章主要介紹了python xlsxwriter庫(kù)生成圖表的應(yīng)用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Python基于socket實(shí)現(xiàn)TCP客戶(hù)端和服務(wù)端
這篇文章主要介紹了Python基于socket實(shí)現(xiàn)的TCP客戶(hù)端和服務(wù)端,以及socket實(shí)現(xiàn)的多任務(wù)版TCP服務(wù)端,下面相關(guān)操作需要的小伙伴可以參考一下2022-04-04Python2和3字符編碼的區(qū)別知識(shí)點(diǎn)整理
在本篇文章中小編給各位分享的是關(guān)于Python2和3字符編碼的區(qū)別知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。2019-08-08如何使用 python查詢(xún)Amazon DynamoDB
本文介紹了如何使用Python Boto3在Amazon DynamoDB上查詢(xún)DynamoDB 表、創(chuàng)建、列出和執(zhí)行其他 CRUD 活動(dòng)以及執(zhí)行其他維護(hù)任務(wù),本文給大家介紹的非常詳細(xì),需要的朋友參考下2023-06-06