国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python中如何正確使用正則表達(dá)式的詳細(xì)模式(Verbose mode expressi

2020-02-16 10:38:13
字體:
供稿:網(wǎng)友

簡(jiǎn)單介紹

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

下圖展示了使用正則表達(dá)式進(jìn)行匹配的流程:

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

引言

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

緊湊模式的例子:

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

詳細(xì)模式的修改之后:

#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  Matchesfirst.last+category@gmail.com Matchesvalid-address@mail.example.com Matchesnot-valid@example.foo  No match

參數(shù)解釋:X    VERBOSE

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 九江市| 察隅县| 景泰县| 重庆市| 迭部县| 宁都县| 贺兰县| 乌鲁木齐市| 陵川县| 长寿区| 衡阳市| 金乡县| 彝良县| 灵丘县| 惠来县| 岳阳县| 南陵县| 罗源县| 丹东市| 大厂| 资源县| 商水县| 闵行区| 大厂| 吴江市| 璧山县| 且末县| 南宫市| 普洱| 疏附县| 固始县| 凤冈县| 馆陶县| 乐亭县| 西丰县| 永寿县| 唐河县| 陇川县| 商河县| 阿勒泰市| 岱山县|