亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python如何使用正則表達(dá)式的前向、后向搜索及前向搜索否定模式詳解

 更新時(shí)間:2017年11月08日 11:33:06   作者:caimouse  
這篇文章主要給大家介紹了關(guān)于python如何使用正則表達(dá)式的前向、后向搜索及前向搜索否定模式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。

前言

在許多的情況下,很多要匹配內(nèi)容是一起出現(xiàn),或者一起不出現(xiàn)的。比如《》,< >,這樣的括號(hào),不存在使用半個(gè)的情況。因此,在正則表達(dá)式里也有一致性的判斷,要么兩個(gè)尖括號(hào)一起出現(xiàn),要么一個(gè)也不要出現(xiàn)。怎么樣來(lái)實(shí)現(xiàn)這種判斷呢?針對(duì)這種情況得引入新的正則表達(dá)式的語(yǔ)法:(?=pattern),這個(gè)語(yǔ)法它會(huì)向前搜索或者向后搜索相關(guān)內(nèi)容,如果不會(huì)出現(xiàn)就不能匹配。不過(guò),這個(gè)匹配不會(huì)消耗任何輸入的字符,它只是查看一下。

例子如下:

#python 3.6 
#蔡軍生 
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
import re 
 
address = re.compile( 
 ''''' 
 # A name is made up of letters, and may include "." 
 # for title abbreviations and middle initials. 
 ((?P<name> 
  ([\w.,]+\s+)*[\w.,]+ 
  ) 
  \s+ 
 ) # name is no longer optional 
 
 # LOOKAHEAD 
 # Email addresses are wrapped in angle brackets, but only 
 # if both are present or neither is. 
 (?= (<.*>$)  # remainder wrapped in angle brackets 
  | 
  ([^<].*[^>]$) # remainder *not* wrapped in angle brackets 
  ) 
 
 <? # optional opening angle bracket 
 
 # The address itself: username@domain.tld 
 (?P<email> 
  [\w\d.+-]+  # username 
  @ 
  ([\w\d.]+\.)+ # domain name prefix 
  (com|org|edu) # limit the allowed top-level domains 
 ) 
 
 >? # optional closing angle bracket 
 ''', 
 re.VERBOSE) 
 
candidates = [ 
 u'First Last <first.last@example.com>', 
 u'No Brackets first.last@example.com', 
 u'Open Bracket <first.last@example.com', 
 u'Close Bracket first.last@example.com>', 
] 
 
for candidate in candidates: 
 print('Candidate:', candidate) 
 match = address.search(candidate) 
 if match: 
  print(' Name :', match.groupdict()['name']) 
  print(' Email:', match.groupdict()['email']) 
 else: 
  print(' No match') 

結(jié)果輸出如下:

Candidate: First Last <first.last@example.com>
 Name : First Last
 Email: first.last@example.com
Candidate: No Brackets first.last@example.com
 Name : No Brackets
 Email: first.last@example.com
Candidate: Open Bracket <first.last@example.com
 No match
Candidate: Close Bracket first.last@example.com>
 No match

python里使用正則表達(dá)式的前向搜索否定模式

上面學(xué)習(xí)前向搜索或后向搜索模式(?=pattern),這個(gè)模式里看到有等于號(hào)=,它是表示一定相等,其實(shí)前向搜索模式里,還有不相等的判斷。比如你需要識(shí)別EMAIL地址:noreply@example.com,這個(gè)EMAIL地址大多數(shù)是不需要回復(fù)的,所以我們要把這個(gè)EMAIL地址識(shí)別出來(lái),并且丟掉它。怎么辦呢?這時(shí)你就需要使用前向搜索否定模式,它的語(yǔ)法是這樣:(?!pattern),這里的感嘆號(hào)就是表示非,不需要的意思。比如遇到這樣的字符串:noreply@example.com,它會(huì)判斷noreply@是否相同,如果相同,就丟掉這個(gè)模式識(shí)別,不再匹配。

例子如下:

#python 3.6 
#蔡軍生 
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
import re 
 
address = re.compile( 
 ''''' 
 ^ 
 
 # An address: username@domain.tld 
 
 # Ignore noreply addresses 
 (?!noreply@.*$) 
 
 [\w\d.+-]+  # username 
 @ 
 ([\w\d.]+\.)+ # domain name prefix 
 (com|org|edu) # limit the allowed top-level domains 
 
 $ 
 ''', 
 re.VERBOSE) 
 
candidates = [ 
 u'first.last@example.com', 
 u'noreply@example.com', 
] 
 
for candidate in candidates: 
 print('Candidate:', candidate) 
 match = address.search(candidate) 
 if match: 
  print(' Match:', candidate[match.start():match.end()]) 
 else: 
  print(' No match') 

結(jié)果輸出如下:

Candidate: first.last@example.com
 Match: first.last@example.com
Candidate: noreply@example.com
 No match

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Python3合并兩個(gè)有序數(shù)組代碼實(shí)例

    Python3合并兩個(gè)有序數(shù)組代碼實(shí)例

    這篇文章主要介紹了Python3合并兩個(gè)有序數(shù)組代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python 使用turtule繪制遞歸圖形(螺旋、二叉樹(shù)、謝爾賓斯基三角形)

    python 使用turtule繪制遞歸圖形(螺旋、二叉樹(shù)、謝爾賓斯基三角形)

    這篇文章主要介紹了python 使用turtule繪制遞歸圖形(螺旋、二叉樹(shù)、謝爾賓斯基三角形) ,需要的朋友可以參考下
    2019-05-05
  • python自定義分頁(yè)器的實(shí)現(xiàn)

    python自定義分頁(yè)器的實(shí)現(xiàn)

    這篇文章主要介紹了python自定義分頁(yè)器的實(shí)現(xiàn),通過(guò)自定義分頁(yè)器封裝展開(kāi)主題并對(duì)其實(shí)用方法簡(jiǎn)單介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Python之list對(duì)應(yīng)元素求和的方法

    Python之list對(duì)應(yīng)元素求和的方法

    今天小編就為大家分享一篇Python之list對(duì)應(yīng)元素求和的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Django配置Redis使用的方法步驟

    Django配置Redis使用的方法步驟

    本文主要介紹了Django配置Redis使用的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • python3 模擬登錄v2ex實(shí)例講解

    python3 模擬登錄v2ex實(shí)例講解

    下面小編就為大家?guī)?lái)一篇python3 模擬登錄v2ex實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • python輸出電腦上所有的串口名的方法

    python輸出電腦上所有的串口名的方法

    今天小編就為大家分享一篇python輸出電腦上所有的串口名的方法,具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python數(shù)據(jù)分析Numpy庫(kù)的常用操作

    python數(shù)據(jù)分析Numpy庫(kù)的常用操作

    numpy 是 Python 的一個(gè)科學(xué)計(jì)算的庫(kù),提供了矩陣運(yùn)算的功能,其一般與 Scipy、matplotlib 一起使用,這篇文章總結(jié)下python數(shù)據(jù)分析Numpy庫(kù)的常用操作,感興趣的朋友一起看看吧
    2022-01-01
  • MAC中PyCharm設(shè)置python3解釋器

    MAC中PyCharm設(shè)置python3解釋器

    本文給大家分享的是修改MACA中pycharm的默認(rèn)的Python解釋器,由于默認(rèn)解釋器是Python2,使用起來(lái)各種不便,下面給大家講解下如何修改
    2017-12-12
  • Python GUI之tkinter詳解

    Python GUI之tkinter詳解

    今天帶大家學(xué)習(xí)Python GUI之tkinter的相關(guān)知識(shí),文中對(duì)如何使用tkinter作了非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-10-10

最新評(píng)論