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

python正則-re的用法詳解

 更新時間:2019年07月28日 09:30:28   作者:浩然haoran  
這篇文章主要介紹了python正則-re的用法詳解,文中給大家提到了正則中的修飾符以及它的功能,需要的朋友可以參考下

天在刷題的時候用到了正則,用的過程中就感覺有點不太熟練了,很久沒有用正則都有點忘了。所以現(xiàn)在呢,我們就一起來review一下python中正則模塊re的用法吧。

今天是review,所以一些基礎的概念就不做介紹了,先來看正則中的修飾符以及它的功能:

修飾符

•re.I 使匹配對大小寫不敏感
•re.L 做本地化識別匹配
•re.M 多行匹配,影響^和$
•re.S 使.匹配包括換行在內(nèi)的所有字符
•re.U 根據(jù)Unicode字符集解析字符.這個標志影響\w \W \b \B
•re.X 該標志通過給予你更靈活的格式以便你將正則表達式寫的更易于理解.

模式

•^ 匹配字符串開頭
•$ 匹配字符串結尾
•. 匹配人以字符,除了換行符號.當re.DOTAALL標記被指定時,則可以匹配包括換行符的任意字符.
•[...] 用來表示一組字符,單獨列出:[amk]匹配a,m或k
•[^...] 不在[]中的字符:[^amk]匹配除amk之外的字符
•re* 匹配0個或多個的表達式
•re+ 匹配1個或多個的表達式
•re? 匹配0個或1個由前面的正則表達式定義的片段,非貪婪方式.
•re{n} 精準匹配n個前面表達式
•re{n,} 匹配大于等于n個前面表達式
•re{n,m} 匹配n到m個前面的表達式定義的片段,貪婪方式
•a|b 匹配a或b
•(re) 對正則表達式分組,并記住匹配的文本
•(?imx) 正則表達式包含三種可選標志,imx,只影響括號中的區(qū)域.
•(?-imx) 正則表達式關閉imx可選標志,只影響括號中的區(qū)域.
•(?:re) 類似(...)但不表示一個組
•(?imx:re) 在括號中使用imx可選標志
•(?-imx:re) 在括號中不是用imx可選標志
•(?#...) 注釋
•(?=re) 前向肯定界定符.如果所含正則表達式,以...表示,在當前位置成功匹配時成功,否則失敗.但一旦所含表達式已經(jīng)嘗試,匹配引擎根本沒有提高,模式的剩余部分還要嘗試界定符右邊.
•(?!re) 前向否定界定符.與肯定界定符相反;當所含的表達式不能在字符串當前位置匹配成功時成功.
•(?>re) 匹配的獨立模式,省去回朔.
•\w 匹配字符數(shù)字以及下劃線
•\W 匹配非字母數(shù)字下劃線
•\s 匹配任意空白字符,等價于[\t\n\r\f]
•\S 匹配任意非空白字符
•\d 匹配任意數(shù)字
•\D 匹配任意非數(shù)字
•\A 匹配字符串開始
•\Z 匹配字符串結束,如果是存在換行,只匹配到換行前的結束字符串.
•\z 匹配字符串結束
•\G 匹配最后匹配完成的位置
•\b 匹配一個單詞邊界,也就是指單詞和空格之間的位置
•\B 匹配非單詞邊界
•\n \t 匹配一個換行符,一個制表符
•\1...\9 匹配第n個分組的內(nèi)容

上面這些呢,是我們會用到的一些模式,這里面絕大部分都是應該熟記于心的。

接下來我們看re的一些方法:

re.compile

這個方法會生成一個正則對象,他的第一個參數(shù)是正則字符串,第二個參數(shù)是修飾符,就是 re.I, re.S 這些。

生成的這個正則對象呢,它還有一些方法,比如match、findall、finditer、search等等,這些方法的用法請往下看。

re.match

match方法是從給定字符串的開頭開始進行匹配,并且只匹配一次。也就是說如果字符串和正則的第一個字母就對不上那就匹配失敗了。

ta的參數(shù)是pettern,string,flags

•pettern 就是正則字符串,如果是通過re.compile方法生成的正則對象.match來調(diào)用的話,就不需要這個參數(shù)了,因為正則對象本身就代表了一個正則匹配模式。

•string 就是要進行匹配的目標字符串

•flags 就是正則的修飾符,比如 re.I

match 如果匹配失敗返回None,匹配懲罰返回的則是一個match對象。

match對象有一些方法,比較常用的有:span、group、groups等等
•span 方法返回的一個二元組,分別表示匹配字符串在目標字符串中的起始下標和結束下標
•group 函數(shù)有一個int類型的參數(shù),參數(shù)為0表示返回正則匹配的字符串,參數(shù)為1返回正則中第一個組匹配的內(nèi)容,2返回第二組的內(nèi)容一次類推
•groups 函數(shù)是所有group函數(shù)結果組成一個元組。

re.search

search 函數(shù)和 match 函數(shù)是類似的,區(qū)別在于match方法是只在目標函數(shù)開頭匹配一次;search函數(shù)是在整個目標函數(shù)上匹配一次,一次匹配成功后不再進行匹配。

同樣search方法返回的也是一個match對象,用法和match方法返回的結果一樣。

re.split

split 函數(shù)是用來分割字符串的一個函數(shù)。它的功能就是根據(jù)匹配的字符串對目標字符串進行分割,返回的結果是一個列表。

需要注意的是,如果正則中有組,組內(nèi)的字符在結果列表中也會保留,不是組內(nèi)的字符在結果列表中不會被保留。什么意思呢?通過一個例子來看一下:

st = 'www.baidu.com www.taobao.com'
result = re.split('bai(du)', st)
print(result)

結果:

['www.', 'du', '.com www.taobao.com']

可以看到,字符串‘du'是被括號括起來的,所以在結果中也有'du'這個元素,而'bai'沒有被括號括起來,在結果中就不會有‘bai'這個元素。

re.findall

這個函數(shù)是我在爬蟲項目中用的最多的一個函數(shù)了,它可以把所有匹配的結果以列表的形式返回,而不是像match和search一樣只匹配一個結果。我們來試一下:

st = 'www.baidu.com www.taobao.com'
result = re.findall(r'www\.(\w*)\.(com)', st)
print(result)
[('baidu', 'com'), ('taobao', 'com')]
re.finditer

這個函數(shù)和findall的功能一樣。不同之處在于這個函數(shù)返回的結果是一個生成器,而生成器中的每一項是一個match對象,我們一起來看一下:

st = 'www.baidu.com www.taobao.com'
result = re.finditer(r'www\.(\w*)\.(com)', st)
print(result.__next__().group(0, 1, 2))
print(next(result).groups(2))
('www.baidu.com', 'baidu', 'com')
('taobao', 'com')
re.sub

這個函數(shù)是用來替換字符串的。可以將匹配的字符串替換成指定的字符串,我們來看一下:

st = 'www.111.com www.222.com'
result = re.sub(r'\d+', 'OK', st)
print(result)

結果:

www.OK.com www.OK.com

我們的第二個參數(shù)除了可以是一個給定的字符串還可以是一個函數(shù):

def toOK(matched):
  value = matched.group()
  return str(int(value)*2)
st = 'www.111.com www.222.com'
result = re.sub(r'\d+', toOK, st)
print(result)

結果:

www.222.com www.444.com

總結

以上所述是小編給大家介紹的python正則-re的用法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關文章

  • Python中六大超時處理方法介紹

    Python中六大超時處理方法介紹

    在?Python?中,超時處理是一項非常常見的需求,尤其是在處理阻塞任務或并發(fā)任務時,本文整理了大家常用的六大超時處理方法,感興趣的小伙伴可以參考下
    2025-01-01
  • python-pymongo常用查詢方法含聚合問題

    python-pymongo常用查詢方法含聚合問題

    這篇文章主要介紹了python-pymongo常用查詢方法含聚合問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python使用正則來處理各種匹配問題

    python使用正則來處理各種匹配問題

    這篇文章主要介紹了python使用正則來處理各種匹配問題,本文通過實例代碼給大家講解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 解鎖Python中神器vars內(nèi)置函數(shù)的使用

    解鎖Python中神器vars內(nèi)置函數(shù)的使用

    vars()函數(shù)是一個內(nèi)置函數(shù),用于返回對象的__字典__,其中包含對象的__屬性__,本文主要為大家詳細介紹了vars()函數(shù)的具體使用,需要的小伙伴可以了解下
    2023-11-11
  • Selenium控制瀏覽器常見操作示例

    Selenium控制瀏覽器常見操作示例

    這篇文章主要介紹了Selenium控制瀏覽器常見操作,結合實例形式分析了Selenium針對瀏覽器的窗口大小控制、前進、后退、刷新、截屏等相關操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python中的type與isinstance的區(qū)別詳解

    Python中的type與isinstance的區(qū)別詳解

    本文主要介紹了Python中的type與isinstance的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • python實現(xiàn)ip查詢示例

    python實現(xiàn)ip查詢示例

    這篇文章主要介紹了python實現(xiàn)ip查詢示例,需要的朋友可以參考下
    2014-03-03
  • Python掃描IP段查看指定端口是否開放的方法

    Python掃描IP段查看指定端口是否開放的方法

    這篇文章主要介紹了Python掃描IP段查看指定端口是否開放的方法,涉及Python使用socket模塊實現(xiàn)端口掃描功能的相關技巧,需要的朋友可以參考下
    2015-06-06
  • 使用python本地部署DeepSeek運行時報錯?OSError:?[WinError?193]?%1?不是有效的?Win32?應用程序的問題及解決方法

    使用python本地部署DeepSeek運行時報錯?OSError:?[WinError?193]?%1?不是

    文章介紹了在本地使用Python部署DeepSeek時遇到的OSError:?[WinError?193]?錯誤,通過檢查錯誤信息,發(fā)現(xiàn)與numpy版本有關,解決方法是卸載并重新安裝numpy,最終,問題得到解決,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • Python matplotlib生成圖片背景透明的示例代碼

    Python matplotlib生成圖片背景透明的示例代碼

    這篇文章主要介紹了Python matplotlib生成圖片背景透明的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08

最新評論

云霄县| 来凤县| 宣武区| 伊金霍洛旗| 云龙县| 绥宁县| 滁州市| 浏阳市| 铅山县| 兰西县| 辽源市| 杂多县| 宁蒗| 吴旗县| 靖州| 康定县| 安阳县| 平和县| 柏乡县| 三台县| 永康市| 普格县| 黄骅市| 开阳县| 桃园县| 娄底市| 高碑店市| 合江县| 大城县| 水城县| 密山市| 砚山县| 天台县| 巍山| 文成县| 米泉市| 宣城市| 德保县| 青河县| 杭锦后旗| 财经|