国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[Regular Expression]Mastering Python Regular Expre

daydream / 2034人閱讀

摘要:續(xù)上基礎(chǔ)通俗三類常用的的簡(jiǎn)寫形式偷懶需要用來對(duì)某一類特定字符進(jìn)行匹配,通常,我們用的最多的字符就是下面的三類數(shù)字,字母和這類看不到占位符,上一部分學(xué)過通過方括號(hào)表示這三類的的方法由于上面的表達(dá)試比較長(zhǎng),所以需要有一種更簡(jiǎn)單的寫法可以

續(xù)上:[Regular Expression]Mastering Python Regular Expression基礎(chǔ)通俗(1) 三類常用的metacharacters的簡(jiǎn)寫形式(偷懶需要)
#metacharacters用來對(duì)某一類特定字符進(jìn)行匹配,通常,我們用的最多的字符就是下面的三類
#數(shù)字,字母 和 space 	這類看不到占位符,上一部分學(xué)過通過方括號(hào)表示這三類的metacharacters的方法
[0-9],[a-zA-Z],[ 	

vf]
#由于上面的表達(dá)試比較長(zhǎng),所以需要有一種更簡(jiǎn)單的寫法:
 [0-9] 可以寫成d
 [a-zA-Z0-9_] 可以寫成w
 [ 	

vf] 可以寫成s
 對(duì)上面metacharacters取反的寫法分別為 D ,W,S (全部大寫即可)
 
點(diǎn)(dot)字符的使用

點(diǎn)這個(gè)字符作為一最常用的metacharacter,可以匹配任何一個(gè)字符,但是不對(duì)newline(換行)進(jìn)行匹配

舉例:
g/.../p  #這個(gè)正則會(huì)匹配三個(gè)任意字符,但是字符不能為newline

過度使用dot字符,會(huì)給閱讀帶來困難,寫正則時(shí),應(yīng)試盡量做到精確匹配
如需要匹配的字符確定是數(shù)字,就使用"d",而不要選擇使用"." 

win and 類unix系統(tǒng)中路徑分割符的匹配
先看例子:
g/[^/]/p

講解:
^ :這個(gè)符號(hào)是取反情況的意思 
/ :對(duì) /這個(gè)符號(hào)進(jìn)行匹配,(因?yàn)?這個(gè)/符號(hào)本身是需要轉(zhuǎn)義)
 :對(duì) 進(jìn)行匹配,

所以上面的正則表達(dá)式的意思是:只要不是 / 和  字符,其它的字符都會(huì)匹配 
在windows系統(tǒng)下路徑分割符為:
在類unix系統(tǒng)下路徑分割符為:/
“或”符號(hào)(alternatation)的使用方法
想像一下,我們需要把輸入文本中“be smart”和"be stupid" 匹配出來,應(yīng)該怎么寫正則呢?

這時(shí)應(yīng)該使用或符號(hào) | 來完成這樣的工作:
g/be (smart|stupid)/p   #注意還使用了圓括號(hào)哦!

g/yes|no|maybe/p     #這時(shí)會(huì)對(duì)yes,no,maybe三個(gè)單詞中的任何一個(gè)進(jìn)行匹配  多個(gè)|符號(hào)的連用
數(shù)量限定符(quantifiers)的使用方法
先記住數(shù)量限定符,使用這四個(gè)符號(hào):?  *  +  {n,m}

他們的意思分別是:
? : 該符號(hào)前面的字符可以出現(xiàn)0個(gè)或1個(gè)
* : 該符號(hào)前面的字符可以出來0個(gè)或多個(gè)
+ : 該符號(hào)前面的字符可以出現(xiàn)1個(gè)或多個(gè)
{n,m}:該符號(hào)前面的字符,最小出現(xiàn)n個(gè),最多出現(xiàn)m個(gè)

舉例說明就懂了:
來個(gè)簡(jiǎn)單的:
g/carS?/p  #  由于?數(shù)量限定符,表示前面的字符可以出來0次,或1次,那個(gè)這個(gè)正則就是在對(duì)car 和 carS進(jìn)行匹配

來個(gè)復(fù)雜一點(diǎn)的:
如果我們需要對(duì)555-555-555 和 555 555 555和  555555555 進(jìn)行正則匹配

進(jìn)行正則匹配的意思就是說,我們寫的一個(gè)正則表達(dá)式,可以把上面三種情況都包含在內(nèi):
實(shí)現(xiàn)如下:
g/d+[-s]?d+[-s]?d+/p 

解析:
d是對(duì)數(shù)字進(jìn)行匹配,
+號(hào)表示前面的數(shù)字可以有1個(gè)或多個(gè),
[-s]表示-或space的二個(gè)選一個(gè)字符的匹配,
?表示前面的字符可以出現(xiàn)0次或1次

由于上面的數(shù)字個(gè)數(shù)是確定的,我們也可以用精確的數(shù)字來進(jìn)行匹配,如下:
g/d{3}[-s]?d{3}[-s]?d{3}/p

上面的{3} 表示前面的字符(這里是d)只能出現(xiàn)三次

對(duì){n,m}進(jìn)行更多的說明:
{,m}:前面的字符可出現(xiàn)0到m次
{n,}:前面的字符可以出現(xiàn)n到無窮次

由此可知:? * +可以使用{n,m}來表示,只是? * +這樣寫更省事
? 等價(jià)于 {0,1}
* 等價(jià)于 {0,}
+ 等價(jià)于 {1,}
數(shù)量限定的符的兩種工作模式 :
通過例子來說明這兩種工作模式:
如果我們使用g/".+"/p 正則對(duì)下面這句話進(jìn)行匹配,會(huì)得到什么結(jié)果?
English "hello" ,Spanish "hola"   

很顯然,可能會(huì)出現(xiàn)兩種情況:
情況1:  匹配到結(jié)果為: "hello"
情況2:  匹配到結(jié)果為: "hello" ,Spanish "hola"

上面兩種情況就對(duì)應(yīng)了數(shù)量限定符 +,的工作模式
上面的情況2,我們稱為Greedy模式 (貪婪模式 )
上面的情況1,我們稱為Reluctant模式 (勉強(qiáng)夠模式)

python中模式使用的是Greedy模式,如果我們想要使用Reluctant模式,也很容易,只需要在+后面加一個(gè)?即可
如下:
g/".+?"/p  #在數(shù)量限定符+后面添加了?,這時(shí)就會(huì)使用Reluctant模式 


所以在Python中,當(dāng)你看到有兩個(gè)數(shù)量限定符時(shí),并且第二個(gè)限定符為?時(shí),你需要馬上知道第二個(gè)數(shù)量限定符的作用是
表示使用Reluctant模式 

對(duì)邊界進(jìn)行匹配的metacharacters
思考:對(duì)于一個(gè)輸入文件,我們有什么邊界:
1:文本的開頭,和文本的結(jié)束
2:在文本中行的開頭,行的結(jié)束
3:?jiǎn)卧~的邊界,(非單詞的邊界)

對(duì)于行的開頭和結(jié)束,使用^ 和 $進(jìn)行匹配
對(duì)于文件的開關(guān)和結(jié)束,使用 A 和進(jìn)行匹配
對(duì)于單詞的邊界使用,進(jìn)行匹配,(非單詞的邊界使用B進(jìn)行匹配)

舉例說明:
 g/^name:/p #對(duì)文件中 所有行的開始,內(nèi)容為name: 的行進(jìn)行匹配

下面的 1,3,4行就滿足正則匹配的結(jié)果

下面為進(jìn)行匹配的文本
name:Tom
abc
name:Jim 
name:
xxname:abc

來個(gè)復(fù)雜一點(diǎn)的例子:
g/^name:[sa-zA-z]+$/p

解釋:
看到正則表達(dá)式前面后^  $, 就知道行首行尾的內(nèi)容都要滿足要求
以name:開頭的行,然后 后面可以接空格或大小寫字母, + 代表前面的字符至少要出現(xiàn)1次


最后一個(gè)例子(下面兩個(gè)比較一下):
g/hello/p      #這個(gè)正則會(huì)把hello ,helloxxx,xxhello, xxhelloxx 都匹配出來
g/hello/p  #這個(gè)正則只會(huì)把多帶帶的 hello 這個(gè)單詞匹配出來
第一章總結(jié):
正則表達(dá)式中的主要內(nèi)容:literal and metacharacters

三個(gè)括號(hào)的使用:
()與 |搭配使用
[] 單個(gè)字符的集合,如[0-9a-z]
{} 屬于數(shù)量限定符{m,n}

學(xué)習(xí)了數(shù)量限定符: ? * + {}
學(xué)習(xí)了邊界匹配符: ^ $ A   B
學(xué)習(xí)了常用字符集合的表達(dá)方式 [0-9],[0-9a-zA-Z],[  s	
fv] ,取反[^
學(xué)習(xí)了三類字符的簡(jiǎn)寫式:/s, /d, /w  取反 /S ,/D, /W
點(diǎn)字符 匹配除newline以外的所有單個(gè)字符 
注意:上面基礎(chǔ)內(nèi)容,需要經(jīng)常回顧!!容易遺忘
后面進(jìn)入Python實(shí)戰(zhàn)部分:re module的使用

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/37917.html

相關(guān)文章

  • [Regular Expression]Mastering Python Regular Expre

    摘要:續(xù)上基礎(chǔ)通俗正則表達(dá)中兩個(gè)重要對(duì)象如下圖使用函數(shù),返回為對(duì)象使用函數(shù),如果到存在的結(jié)果,則返回對(duì)象,否則返回福利一個(gè)在線驗(yàn)證自己寫的正則表達(dá)式是否正確的網(wǎng)站關(guān)于正則表達(dá)式中的如下圖中的前加入字母表明里面的表達(dá)式已經(jīng)是而前面加了,表明,在做之 續(xù)上:[Regular Expression]Mastering Python Regular Expression基礎(chǔ)通俗(2) 1:Pyth...

    sihai 評(píng)論0 收藏0
  • PHP 正則表達(dá)式入門 Getting Started with PHP Regular Expre

    摘要:兼容的正則表達(dá)式已經(jīng)實(shí)現(xiàn)了很多使用不同解析引擎的正則函數(shù)。中主要有兩個(gè)正則解析器一個(gè)稱為,另一個(gè)稱為兼容正則表達(dá)式。在中,每個(gè)正則表達(dá)式模式都是使用符合格式的字符串。 原文鏈接: Getting Started with PHP Regular Expressions Last-Modified: 2019年5月10日16:23:19譯者注: 本文是面向0正則基礎(chǔ)的phper, 很多...

    zhangke3016 評(píng)論0 收藏0
  • 正則表達(dá)式之瑞士軍刀

    摘要:瞎乎出品瞎乎第二期正則表達(dá)式之瑞士軍刀正則表達(dá)式,這是一塊硬骨頭,很難啃,但是啃著又很香。正則表達(dá)式使用單個(gè)字符串來描述匹配一系列匹配某個(gè)句法規(guī)則的字符串。 瞎乎 出品瞎乎第二期:正則表達(dá)式之瑞士軍刀 正則表達(dá)式(Regular Expression),這是一塊硬骨頭,很難啃,但是啃著又很香。 正則表達(dá)式使用單個(gè)字符串來描述、匹配一系列匹配某個(gè)句法規(guī)則的字符串。很多地方我們都需要使用正...

    Mr_houzi 評(píng)論0 收藏0
  • Python中fnmatch模塊的使用

    摘要:函數(shù)匹配能力介于簡(jiǎn)單的字符串方法和強(qiáng)大的正則表達(dá)式之間,如果在數(shù)據(jù)處理操作中只需要簡(jiǎn)單的通配符就能完成的時(shí)候,這通常是一個(gè)比較合理的方案。此模塊的主要作用是文件名稱的匹配,并且匹配的模式使用的風(fēng)格。 fnmatch()函數(shù)匹配能力介于簡(jiǎn)單的字符串方法和強(qiáng)大的正則表達(dá)式之間,如果在數(shù)據(jù)處理操作中只需要簡(jiǎn)單的通配符就能完成的時(shí)候,這通常是一個(gè)比較合理的方案。此模塊的主要作用是文件名稱的匹配...

    PAMPANG 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<