首頁 > 軟體

Python正規表示式的小練習分享

2022-04-18 13:01:11

匹配網址 url 的小練習

定義一個函數,判斷 url 是否是一個正常的地址。

定義一個函數,只獲取 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 是一個合法的網站地址'
    else:
        return 'url 是一個不合法的網站地址'


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)

執行結果如下:

匹配郵箱地址的小練習

定義一個函數,獲取郵箱的地址。

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)      # 這樣寫比較複雜,可以使用萬用字元
    result = re.findall('.+@.+.[a-zA-Z]', email)
    return result


if __name__ == '__main__':
    get_email = get_email(email)
    print(get_email)
    
# >>> 執行結果如下:
# >>> ['Neo@protonmail.com']

獲取前端程式碼內容的練習

接下來做一個稍微複雜一些的練習:

定義一個函數,獲取一段前端程式碼中雙引號包裹的內容。

定義一個函數,獲取該段前端程式碼中所有的雙引號包裹的內容

import re


html = ('<div class="s-top-nav" style="display:none;">'
        '</div><div class="s-center-box"></div>')		# 這是前端程式碼,暫時不用理解是什麼意思


def get_html_data(html):
    re_g = re.compile('style="(.*?)"')      # 非貪婪模式獲取 style 標籤的內容
    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)
    
# >>> 執行結果如下:
# >>> ['display:none;']
# >>> ['s-top-nav', 'display:none;', 's-center-box']

通過獲取前端程式碼標籤內容的例子,我們可以看出,只要找到字串的規律,通過這些規律去定義正則匹配的規則就可以拿到想要的資訊。

OK,今天的練習就到這裡了。正規表示式最最核心最最重要的就是匹配的相關操作, findall 與 search 函數就是常用的兩個函數,以及其它函數的匹配規律都是完全相同的,只不過它們返回的值會存在著不同,或者說這些函數的使用場景存在著一定的區別,但是返回的結果幾乎都是相同的。

到此這篇關於Python正規表示式的小練習分享的文章就介紹到這了,更多相關Python正規表示式練習內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com