最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3的正則表達式詳解

 更新時間:2022年03月16日 08:56:45   作者:FUXI_Willard  
這篇文章主要為大家詳細介紹了Python3正則表達式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1.簡介

# 正則表達式:用來匹配字符串的武器;
# 設(shè)計思想:用一種描述性的語言來給字符串定義一個規(guī)則,凡是符合規(guī)則的字符串,認為匹配,否則,該字符串是不合法的;
# 實例:判斷一個字符串是否是合法的Email方法:
# 1.創(chuàng)建一個匹配Email的正則表達式;
# 2.用該正則表達式去匹配用戶的輸入來判斷是否合法;
# 如:\d可以匹配一個數(shù)字,\w可以匹配一個字母或數(shù)字;
# a. "00\d"可以匹配"008",但無法匹配"00A";
# b. "\d\d\d"可以匹配"009";
# c. "\w\w\d"可以匹配"py3";
# 如: .匹配任意字符
# a. "py."可以匹配"pyc"、"pyt"等;
# 匹配變長的字符:
# a.用*表示任意個字符(包括0個);
# b.用+表示至少一個字符;
# c.用?表示0個或1個字符;
# d.用{n}表示n個字符;
# e.用{n,m}表示n-m個字符;
# 實例:\d{2}\s+\d{3,6}
# a.\d{2}表示匹配2個數(shù)字,如:"52";
# b.\s可以匹配一個空格,\s+表示至少有一個空格,如:匹配" "等;
# c.\d{3,6}表示3-6個數(shù)字,如:"584520";
# 精準匹配,用[]表示范圍
# a.[0-9a-zA-Z\_]表示可以匹配一個數(shù)字、字母、下劃線;
# b.[0-9a-zA-Z\_]+表示可以匹配至少由一個數(shù)字、字母或下劃線組成的字符串,如:"Py20";
# c.[a-zA-Z\_][0-9a-zA-Z\_]*表示匹配由字母或下劃線開頭,后接任意個由一個數(shù)字、字母或下劃線組成的字符串;
# d.[a-zA-Z\_][0-9a-zA-Z\_]{0,19}限制變量長度為1-20個字符;
# e.A|B表示匹配A或B,如:(W|w)illard匹配"Willard"或"willard";
# f.^表示行的開頭,^\d表示必須以數(shù)字開頭;
# g.$表示行的結(jié)束,\d$表示必須以數(shù)字結(jié)束;
# re模塊:
import re
print("匹配成功,返回一個Match對象:")
print(re.match(r"^\d{3}\-\d{3,8}$", "020-6722053"))
print("----------------------------------------------------")
print("匹配失敗,返回一個None:")
print(re.match(r"^\d{3}\-\d{3,8}$", "020 6722053"))
print("----------------------------------------------------")
user_input = input("請輸入測試字符串:")
if re.match(r"^W|w{1-10}", user_input):
    print("It's OK.")
else:
    print("Failed.")

# 結(jié)果輸出:
匹配成功,返回一個Match對象:
<re.Match object; span=(0, 11), match='020-6722053'>
----------------------------------------------------
匹配失敗,返回一個None:
None
----------------------------------------------------
請輸入測試字符串:Willard584520
It's OK.

2.切分字符串

import re
str_input = input("Please input test string:")
# 通過空格切分字符串
print(re.split(r"\s+", str_input))
# 結(jié)果輸出:
# Please input test string:Hello Python.
# ['Hello', 'Python.']
import re
str_input = input("Please input test string:")
print(re.split(r"[\s\,]+", str_input))
# 結(jié)果輸出:
# Please input test string:Hello Willard,welcome to FUXI Technology.
# ['Hello', 'Willard', 'welcome', 'to', 'FUXI', 'Technology.']
import re
str_input = input("Please input test string:")
print(re.split(r"[\s\,\.\;]+", str_input))
# 結(jié)果輸出:
# Please input test string:Hello;I am Willard.Welcome to FUXI Technology.
# ['Hello', 'I', 'am', 'Willard', 'Welcome', 'to', 'FUXI', 'Technology', '']

3.分組

# ()表示要提取的分組(Group)
# ^(\d{3})-(\d{3,8})$分別定義了兩個組
import re
match_test = re.match(r"^(\d{3})-(\d{3,8})$","020-6722053")
print("match_test:", match_test)
print("match_group(0):", match_test.group(0))
print("match_group(1):", match_test.group(1))
print("match_group(2):", match_test.group(2))
print("---------------------------------------------------------")
website_match_test = re.match(r"(\w{3}).(\w{5}).(\w{3})", "www.baidu.com")
print("website_match_test:", website_match_test)
print("website_match_test_group(0):", website_match_test.group(0))
print("website_match_test_group(1):", website_match_test.group(1))
print("website_match_test_group(2):", website_match_test.group(2))
print("website_match_test_group(3):", website_match_test.group(3))

# 結(jié)果輸出:
match_test: <re.Match object; span=(0, 11), match='020-6722053'>
match_group(0): 020-6722053
match_group(1): 020
match_group(2): 6722053
---------------------------------------------------------
website_match_test: <re.Match object; span=(0, 13), match='www.baidu.com'>
website_match_test_group(0): www.baidu.com
website_match_test_group(1): www
website_match_test_group(2): baidu
website_match_test_group(3): com

4.貪婪匹配

# 貪婪匹配:匹配盡可能多的字符;
import re
string_input =  input("Please input string:")
print("采用貪婪匹配:")
print(re.match(r"^(\d+)(0*)$", string_input).groups())
print("---------------------")
print("采用非貪婪匹配:")
print(re.match(r"^(\d+?)(0*)$", string_input).groups())
Please input string:1008600
采用貪婪匹配:
('1008600', '')
---------------------
采用非貪婪匹配:
('10086', '00')

5.編譯

# 使用正則表達式,re模塊內(nèi)部:
# a.編譯正則表達式,如果正則表達式的字符串本身不合法,拋出錯誤;
# b.用編譯后的正則表達式去匹配字符串;
# c.如果一個正則表達式要重復(fù)使用幾千次,考慮效率,
# 可以預(yù)編譯正則表達式,重復(fù)使用時,不需要編譯這個步驟,直接匹配;
import re
# 編譯
re_telephone = re.compile(r"^(\d{3})-(\d{3,8})$")
# 使用
telephone_input1 = input("Willard,please input your telphone number:")
telephone_input2 = input("Chen,Please input your telphone number:")
print("match:020-6722053,", re_telephone.match(telephone_input1).groups())
print("match:020-6722066,", re_telephone.match(telephone_input2).groups())

# 結(jié)果輸出:
Willard,please input your telphone number:020-6722053
Chen,Please input your telphone number:020-6722066
match:020-6722053, ('020', '6722053')
match:020-6722066, ('020', '6722066') 

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • Django中如何使用sass的方法步驟

    Django中如何使用sass的方法步驟

    這篇文章主要介紹了Django中如何使用sass的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python對象的生命周期源碼學(xué)習(xí)

    Python對象的生命周期源碼學(xué)習(xí)

    這篇文章主要為大家介紹了Python對象的生命周期源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • python 實現(xiàn)Flask中返回圖片流給前端展示

    python 實現(xiàn)Flask中返回圖片流給前端展示

    今天小編就為大家分享一篇python 實現(xiàn)Flask中返回圖片流給前端展示,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 使用pyplot.matshow()函數(shù)添加繪圖標題

    使用pyplot.matshow()函數(shù)添加繪圖標題

    這篇文章主要介紹了使用pyplot.matshow()函數(shù)添加繪圖標題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python命令行解析模塊詳解

    Python命令行解析模塊詳解

    這篇文章主要介紹了Python命令行解析模塊詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python里glob模塊知識點總結(jié)

    python里glob模塊知識點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python里glob模塊知識點總結(jié),有需要的朋友們可以參考下。
    2021-01-01
  • Python 3 中使用 Memcached的示例詳解

    Python 3 中使用 Memcached的示例詳解

    pymemcache是另一個流行的、功能豐富的Python Memcached客戶端庫,比python-memcached提供了復(fù)雜的操作和性能,在 Python3 中,使用 Memcached,高性能的分布式內(nèi)存對象緩存系統(tǒng),可以通過多個第三方庫來實現(xiàn),本文介紹Python 使用 Memcached相關(guān)知識,感興趣的朋友一起看看吧
    2024-02-02
  • python中的異步爬蟲詳解

    python中的異步爬蟲詳解

    這篇文章主要介紹了python中的異步爬蟲詳解,所謂的異步異步?IO,就是發(fā)起一個?IO?阻塞的操作,但是不用等到它結(jié)束,可以在它執(zhí)行?IO?的過程中繼續(xù)做別的事情,當?IO?執(zhí)行完畢之后會收到它的通知,需要的朋友可以參考下
    2023-08-08
  • 在Python的Django框架中生成CSV文件的方法

    在Python的Django框架中生成CSV文件的方法

    這篇文章主要介紹了在Python的Django框架中生成CSV文件的方法,利用到了Python下的csv模塊,需要的朋友可以參考下
    2015-07-07
  • 使用Python開發(fā)一個圖像標注與OCR識別工具

    使用Python開發(fā)一個圖像標注與OCR識別工具

    這篇文章主要介紹了一個使用Python開發(fā)的工具,允許用戶在圖像上進行矩形標注,使用 OCR 對標注區(qū)域進行文本識別,并將結(jié)果保存為 Excel 文件,感興趣的可以了解下
    2025-03-03

最新評論

眉山市| 阿拉善盟| 云霄县| 鹿泉市| 浦东新区| 安乡县| 上杭县| 虞城县| 湘西| 根河市| 特克斯县| 英山县| 砀山县| 河东区| 黄龙县| 余干县| 鸡泽县| 威远县| 德兴市| 高清| 乐至县| 洛宁县| 十堰市| 北宁市| 越西县| 无锡市| 稻城县| 手游| 紫金县| 阳信县| 盘锦市| 驻马店市| 永善县| 抚顺市| 分宜县| 保德县| 应城市| 沙坪坝区| 英吉沙县| 宜都市| 开原市|