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

python中如何正確使用正則表達式的詳細模式(Verbose mode expression)

 更新時間:2017年11月08日 11:43:03   作者:caimouse  
許多程序設(shè)計語言都支持利用正則表達式進行字符串操作,python自然也不例外,下面這篇文章主要給大家介紹了關(guān)于在python中如何正確使用正則表達式的詳細模式(Verbose mode expression)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。

簡單介紹

正則表達式并不是Python的一部分。正則表達式是用于處理字符串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎,效率上可能不如str自帶的方法,但功能十分強大。得益于這一點,在提供了正則表達式的語言里,正則表達式的語法都是一樣的,區(qū)別只在于不同的編程語言實現(xiàn)支持的語法數(shù)量不同;但不用擔(dān)心,不被支持的語法通常是不常用的部分。如果已經(jīng)在其他語言里使用過正則表達式,只需要簡單看一看就可以上手了。

下圖展示了使用正則表達式進行匹配的流程:

正則表達式的大致匹配過程是:依次拿出表達式和文本中的字符比較,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。

引言

當(dāng)大家寫的正則表達式比較長,比較復(fù)雜時,發(fā)現(xiàn)經(jīng)常會寫錯,或者很難維護,遇到這種情況怎么辦呢?這個不用急,聰明的設(shè)計人員早已經(jīng)想到這種情況了,提供了一種叫做詳細模式(Verbose mode expression)。當(dāng)你使用這種模式時,可以給正則表達式添加注釋,這樣在維護時就不會像看天書了,同時也可以添加額外的空格,進行對齊排版。

緊湊模式的例子:

import re 
 
address = re.compile('[\w\d.+-]+@([\w\d.]+\.)+(com|org|edu)') 
 
candidates = [ 
 u'first.last@example.com', 
 u'first.last+category@gmail.com', 
 u'valid-address@mail.example.com', 
 u'not-valid@example.foo', 
] 
 
for candidate in candidates: 
 match = address.search(candidate) 
 print('{:<30} {}'.format( 
 candidate, 'Matches' if match else 'No match') 
 )

詳細模式的修改之后:

#python 3.6 
#蔡軍生 
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
import re 
 
address = re.compile( 
 ''''' 
 [\w\d.+-]+ # username 
 @ 
 ([\w\d.]+\.)+ # domain name prefix 
 (com|org|edu) # TODO: support more top-level domains 
 ''', 
 re.VERBOSE) 
 
candidates = [ 
 u'first.last@example.com', 
 u'first.last+category@gmail.com', 
 u'valid-address@mail.example.com', 
 u'not-valid@example.foo', 
] 
 
for candidate in candidates: 
 match = address.search(candidate) 
 print('{:<30} {}'.format( 
 candidate, 'Matches' if match else 'No match'), 
 ) 

結(jié)果輸出如下:

first.last@example.com  Matches
first.last+category@gmail.com Matches
valid-address@mail.example.com Matches
not-valid@example.foo  No match

參數(shù)解釋:X    VERBOSE

該標(biāo)志通過給予你更靈活的格式以便你將正則表達式寫得更易于理解。當(dāng)該標(biāo)志被指定時,在 RE 字符串中的空白符被忽略,除非該空白符在字符類中或在反斜杠之後;這可以讓你更清晰地組織和縮進 RE。它也可以允許你將注釋寫入 RE,這些注釋會被引擎忽略;注釋用 "#"號 來標(biāo)識,不過該符號不能在字符串或反斜杠之後。

總結(jié)

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

相關(guān)文章

  • cv2.getStructuringElement()函數(shù)及開、閉、腐蝕、膨脹原理講解

    cv2.getStructuringElement()函數(shù)及開、閉、腐蝕、膨脹原理講解

    getStructuringElement()函數(shù)可用于構(gòu)造一個特定大小和形狀的結(jié)構(gòu)元素,用于圖像形態(tài)學(xué)處理,這篇文章主要介紹了cv2.getStructuringElement()函數(shù)及開、閉、腐蝕、膨脹原理講解的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • python  logging日志打印過程解析

    python logging日志打印過程解析

    這篇文章主要介紹了python logging日志打印過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 利用Anaconda安裝TensorFlow全過程

    利用Anaconda安裝TensorFlow全過程

    這篇文章主要介紹了利用Anaconda安裝TensorFlow全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python實現(xiàn)ping指定IP的示例

    Python實現(xiàn)ping指定IP的示例

    今天小編就為大家分享一篇Python實現(xiàn)ping指定IP的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • linux系統(tǒng)下pip升級報錯的解決方法

    linux系統(tǒng)下pip升級報錯的解決方法

    這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下pip升級報錯的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 利用Python編寫一個蹭WiFi的軟件

    利用Python編寫一個蹭WiFi的軟件

    這篇文章主要為大家詳細介紹了如何利用Python編寫一個簡易的蹭WiFi的軟件,文中的示例代碼講解詳細,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-06-06
  • 樹莓派動作捕捉抓拍存儲圖像腳本

    樹莓派動作捕捉抓拍存儲圖像腳本

    這篇文章主要為大家詳細介紹了樹莓派動作捕捉抓拍存儲圖像腳本,支持Python 2.7,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python語言實現(xiàn)科學(xué)計算器

    Python語言實現(xiàn)科學(xué)計算器

    這篇文章主要為大家詳細介紹了Python語言實現(xiàn)科學(xué)計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 在Python3中使用asyncio庫進行快速數(shù)據(jù)抓取的教程

    在Python3中使用asyncio庫進行快速數(shù)據(jù)抓取的教程

    這篇文章主要介紹了在Python3中使用asyncio進行快速數(shù)據(jù)抓取,asyncio是一個異步IO庫,運行效率較高,需要的朋友可以參考下
    2015-04-04
  • Python學(xué)習(xí)之迭代器詳解

    Python學(xué)習(xí)之迭代器詳解

    這篇文章主要介紹了Python中的一個新的概念,那就是迭代器 。迭代器的使用可以幫助我們提升代碼的性能,接下來讓我們深入了解一下迭代器吧
    2022-04-04

最新評論