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

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

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

前言

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

例子如下:

#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),這個模式里看到有等于號=,它是表示一定相等,其實前向搜索模式里,還有不相等的判斷。比如你需要識別EMAIL地址:noreply@example.com,這個EMAIL地址大多數(shù)是不需要回復(fù)的,所以我們要把這個EMAIL地址識別出來,并且丟掉它。怎么辦呢?這時你就需要使用前向搜索否定模式,它的語法是這樣:(?!pattern),這里的感嘆號就是表示非,不需要的意思。比如遇到這樣的字符串:noreply@example.com,它會判斷noreply@是否相同,如果相同,就丟掉這個模式識別,不再匹配。

例子如下:

#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é)

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

相關(guān)文章

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

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

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

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

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

    python自定義分頁器的實現(xiàn)

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

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

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

    Django配置Redis使用的方法步驟

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

    python3 模擬登錄v2ex實例講解

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

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

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

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

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

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

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

    Python GUI之tkinter詳解

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

最新評論