python中如何正確使用Regex的詳細模式(Verbose mode expression),pythonverbose

來源:互聯網
上載者:User

python中如何正確使用Regex的詳細模式(Verbose mode expression),pythonverbose

簡單介紹

Regex並不是Python的一部分。Regex是用於處理字串的強大工具,擁有自己獨特的文法以及一個獨立的處理引擎,效率上可能不如str內建的方法,但功能十分強大。得益於這一點,在提供了Regex的語言裡,Regex的文法都是一樣的,區別只在於不同的程式設計語言實現支援的文法數量不同;但不用擔心,不被支援的文法通常是不常用的部分。如果已經在其他語言裡使用過Regex,只需要簡單看一看就可以上手了。

展示了使用Regex進行匹配的流程:

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

引言

當大家寫的Regex比較長,比較複雜時,發現經常會寫錯,或者很難維護,遇到這種情況怎麼辦呢?這個不用急,聰明的設計人員早已經想到這種情況了,提供了一種叫做詳細模式(Verbose mode expression)。當你使用這種模式時,可以給Regex添加註釋,這樣在維護時就不會像看天書了,同時也可以添加額外的空格,進行對齊排版。

緊湊模式的例子:

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'),  ) 

結果輸出如下:

first.last@example.com  Matchesfirst.last+category@gmail.com Matchesvalid-address@mail.example.com Matchesnot-valid@example.foo  No match

參數解釋:X    VERBOSE

該標誌通過給予你更靈活的格式以便你將Regex寫得更易於理解。當該標誌被指定時,在 RE 字串中的空白符被忽略,除非該空白符在字元類中或在反斜線之後;這可以讓你更清晰地組織和縮排 RE。它也可以允許你將注釋寫入 RE,這些注釋會被引擎忽略;注釋用 "#"號 來標識,不過該符號不能在字串或反斜線之後。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對幫客之家的支援。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.