欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python正則表達式高級使用方法匯總

 更新時間:2020年06月18日 11:50:55   作者:guran0822  
這篇文章主要介紹了Python正則表達式高級使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

正則表達式是一個以簡單直觀的方式匹配指定文本信息從而達到查找、替換等操作的目的。正則表達式以其簡單而高效的特點使得其在數(shù)據(jù)分析和數(shù)據(jù)驗證方面應用廣泛。

對于簡單的正則表達式可以直接百度之,這里重點引薦下‘特殊'操作。

1.非貪婪模式 - {x,y}?

非貪婪模式是指在使用正則匹配時,盡可能少的匹配(默認是貪婪模式,即:盡可能多的匹配)。例:

>>> re.search(r'[\d]{2,5}?','091234568')

<_sre.SRE_Match object; span=(0, 2), match='09'>

在這里{2,5}?匹配只是匹配2-5個[\d]時只要滿足2(最少的)個就好,在看看貪婪模式:

>>> re.search(r'[\d]{2,5}','091234568')
<_sre.SRE_Match object; span=(0, 5), match='09123'>  

這時候,匹配2-5個[\d]時,默認匹配最多的5個。

注意:貪婪和非貪婪模式的區(qū)別就是重復操作符后有沒有?字符

2.分組

正則表達式提供了一個機制將表達式分組,匹配的結果也將按照表達式單獨分組。例:

>>> m = re.search(r'(\d{3})-(\d{5})','029-25642')
>>> m.group()
'029-25642'
>>> m.groups()
('029', '25642')
>>> m.group(2)
'25642'

可以通過m.groups()看到分組匹配結果,通過m.group(index)查看具體編號的分組結果(編號從1開始,0是完整的匹配)。那分組有什么用呢,好像也沒什么特殊的含義,不急,下面會用到。

3.引用分組(回溯) - \N

有這么一種情況,比如假設我要找出一個html文本中的所有<a></a>標簽,怎么辦?試試這樣:

>>> re.search(r'<(\w+)>.+</(\w+)>','<a>this is a demo</e>')
<_sre.SRE_Match object; span=(0, 21), match='<a>this is a demo</e>'>

奇怪的事情來了,為什么<a></e>被匹配成功了,顯然結果并不是想要的,那怎么才能只匹配<a></a>而過濾掉其他的呢(比如<a></e>)?答案就是引用分組,例:

>>> re.search(r'<(\w+)>.+</\1>','<a>this is a demo</e><p>demo two</p>')
<_sre.SRE_Match object; span=(21, 36), match='<p>demo two</p>'>  

這里\1是關鍵,意思就是當前位置匹配的結果需要和第一個分組匹配的結果一致,或者說第一個分組的匹配結果期望在這里再次出現(xiàn)。以此類推。該方法最多只能匹配前99個分組。

4.分組命名 - (?P<name>.*)

分組命名最開始由python引入,比如Django路由中會用到。分組命名的好處是方便,直接使用名字比編號要簡單而且不會變化,例:

>>> m = re.search(r'(?P<first_name>\d{3})-(?P<second_name>\d{4})','029-8967')
>>> m.group('first_name')
'029'
>>> m.groupdict()
 {'first_name': '029', 'second_name': '8967'}

當然,命名分組仍然是編號分組,依然可以使用編號進行查找分組。

5.先行斷言 - X(?!Y)、X(?=Y)

假設有這么一種情況,要查找所有163信箱的文本,也就是@163.com結尾的所有email賬號信息,也就是說不要@163.com這部分,但是其還要參與匹配。這就用到了先行斷言,也即基于之后的內(nèi)容是否存在接收或拒絕一個匹配,而不需要接下來的內(nèi)容作為匹配的一部分。例:

>>> re.search(r'h(?!e)','hello home!')
<_sre.SRE_Match object; span=(6, 7), match='h'>

h(?!e)表示匹配h,而且h后面不能是e,此處匹配成功的是home,但是只返回h

>>> re.search(r'h(?=e)','hello home!')
<_sre.SRE_Match object; span=(0, 1), match='h'>

h(?=e)表示匹配he,此處匹配成功的是hello,但是只返回h

6.標記

  • 不區(qū)分大小寫:re.IGNORECASE(簡寫re.I)-使得正則表達式不區(qū)分大小寫
  • 點匹配換行符:re.DOTALL(簡寫re.S)-使得 . 符號可以匹配換行符
  • 多行模式:re.MULTILINE(簡寫re.M)-使得^$字符可以匹配任意行的開始與結束
  • 詳細模式:re.VERBOSE(簡寫re.X)-使得正則表達式可以換行書寫,且可以加入注釋
  • 調(diào)試模式:re.DEBUG-將調(diào)試信息輸出到sys.stderr
  • 使用多個標記時,使用|分隔,如re.S|re.M

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • selenium自動化測試簡單準備

    selenium自動化測試簡單準備

    本文主要介紹了selenium自動化測試簡單準備,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • pymysql的安裝以及操作實戰(zhàn)指南

    pymysql的安裝以及操作實戰(zhàn)指南

    這篇文章主要給大家介紹了關于pymysql的安裝以及操作的相關資料,pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Python可變參數(shù)*args和**kwargs

    Python可變參數(shù)*args和**kwargs

    本文我們將通過示例了解 Python函數(shù)的可變參數(shù)*args和?**kwargs的用法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python dict 相同key 合并value的實例

    python dict 相同key 合并value的實例

    今天小編就為大家分享一篇python dict 相同key 合并value的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 詳細解讀Python的web.py框架下的application.py模塊

    詳細解讀Python的web.py框架下的application.py模塊

    這篇文章主要介紹了Python的web.py框架下的application.py模塊,作者深入分析了web.py的源碼,需要的朋友可以參考下
    2015-05-05
  • win10系統(tǒng)配置GPU版本Pytorch的詳細教程

    win10系統(tǒng)配置GPU版本Pytorch的詳細教程

    這篇文章主要介紹了win10系統(tǒng)配置GPU版本Pytorch,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Python語言的自我介紹一起來看看

    Python語言的自我介紹一起來看看

    這篇文章主要為大家詳細介紹了Python語言的自我介紹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • python實現(xiàn)逆濾波與維納濾波示例

    python實現(xiàn)逆濾波與維納濾波示例

    今天小編就為大家分享一篇python實現(xiàn)逆濾波與維納濾波示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Django調(diào)用百度AI接口實現(xiàn)人臉注冊登錄代碼實例

    Django調(diào)用百度AI接口實現(xiàn)人臉注冊登錄代碼實例

    這篇文章主要介紹了Django調(diào)用百度AI接口實現(xiàn)人臉注冊登錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • python生成png的方法

    python生成png的方法

    本文主要介紹了python生成png的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論