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

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)文章

  • Python基于pyecharts實(shí)現(xiàn)關(guān)聯(lián)圖繪制

    Python基于pyecharts實(shí)現(xiàn)關(guān)聯(lián)圖繪制

    這篇文章主要介紹了Python基于pyecharts實(shí)現(xiàn)關(guān)聯(lián)圖繪制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 用Python獲取攝像頭并實(shí)時(shí)控制人臉的實(shí)現(xiàn)示例

    用Python獲取攝像頭并實(shí)時(shí)控制人臉的實(shí)現(xiàn)示例

    這篇文章主要介紹了用Python獲取攝像頭并實(shí)時(shí)控制人臉的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe

    解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe

    今天在使用conda創(chuàng)建環(huán)境之后,使用pycham發(fā)現(xiàn)找到自己的python環(huán)境但是找不到環(huán)境對(duì)應(yīng)的python.exe,這篇文章主要給大家介紹了關(guān)于如何解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • pycharm 激活碼及使用方式的詳細(xì)教程

    pycharm 激活碼及使用方式的詳細(xì)教程

    這篇文章主要介紹了pycharm 激活碼及使用方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • pydev使用wxpython找不到路徑的解決方法

    pydev使用wxpython找不到路徑的解決方法

    pydev使用wx庫(kù)開(kāi)發(fā)的過(guò)程中,import時(shí)碰到wx可以識(shí)別,但是其它很多函數(shù)和變量上面全部是紅叉,即無(wú)法識(shí)別
    2013-02-02
  • Python自定義一個(gè)異常類的方法

    Python自定義一個(gè)異常類的方法

    在本篇文章里小編給大家分享了關(guān)于Python自定義一個(gè)異常類的詳細(xì)步驟和實(shí)例代碼,有興趣的朋友們參考學(xué)習(xí)下。
    2019-06-06
  • 在Python的Flask框架中使用模版的入門(mén)教程

    在Python的Flask框架中使用模版的入門(mén)教程

    這篇文章主要介紹了在Python的Flask框架中使用模版的入門(mén)教程,模版的使用是Flask使用當(dāng)中的基礎(chǔ),需要的朋友可以參考下
    2015-04-04
  • NumPy數(shù)組復(fù)制與視圖詳解

    NumPy數(shù)組復(fù)制與視圖詳解

    NumPy 數(shù)組的復(fù)制和視圖是兩種不同的方式來(lái)創(chuàng)建新數(shù)組,它們之間存在著重要的區(qū)別,本文將給大家詳細(xì)介紹一下NumPy數(shù)組復(fù)制與視圖,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 不知道這5種下劃線的含義,你就不算真的會(huì)Python!

    不知道這5種下劃線的含義,你就不算真的會(huì)Python!

    Python是一種高級(jí)程序語(yǔ)言,其核心設(shè)計(jì)哲學(xué)是代碼可讀性和語(yǔ)法,能夠讓程序員用很少的代碼來(lái)表達(dá)自己的想法。這篇文章主要介紹了不知道這5種下劃線的含義,你就不算真的會(huì)Python!對(duì)此標(biāo)題感興趣的朋友一起閱讀本文吧
    2018-10-10
  • Python中調(diào)用和運(yùn)行其他.py文件的多種實(shí)現(xiàn)方法

    Python中調(diào)用和運(yùn)行其他.py文件的多種實(shí)現(xiàn)方法

    本文介紹了在Python中調(diào)用和運(yùn)行其他.py文件的四種方法:subprocess模塊、exec函數(shù)、import語(yǔ)句和os.system函數(shù),每種方法都有其適用場(chǎng)景和優(yōu)缺點(diǎn)
    2025-02-02

最新評(píng)論

石景山区| 两当县| 北流市| 南澳县| 和平区| 三河市| 文成县| 大关县| 工布江达县| 资中县| 涪陵区| 吉水县| 三亚市| 乐清市| 卓资县| 镇原县| 天峨县| 奉新县| 湾仔区| 绵竹市| 高淳县| 桂平市| 集安市| 砚山县| 定安县| 满城县| 平利县| 永吉县| 体育| 湖口县| 怀来县| 天柱县| 洪洞县| 剑阁县| 永登县| 镶黄旗| 永兴县| 青海省| 大余县| 揭东县| 镇远县|