韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

正則表達(dá)式高級(jí)學(xué)習(xí)技巧

正則表達(dá)式高級(jí)學(xué)習(xí)技巧

更新時(shí)間:2020-12-23 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

前言
  Regular Expressions(正則表達(dá)式,以下用RE稱呼)對(duì)小弟來(lái)說(shuō)一直都是神密的地帶,看到一些網(wǎng)絡(luò)上的大大,簡(jiǎn)單用RE就決解了某些文字的問(wèn)題,小弟便興起了學(xué)一學(xué)RE的想法,但小弟天生就比較懶一些,總希望看有沒(méi)有些快速學(xué)習(xí)的方式,于是小弟又請(qǐng)出Google大神,藉由祂的神力,小弟在網(wǎng)絡(luò)上找到了Jim Hollenhorst先生的文章,經(jīng)過(guò)了閱讀,小弟覺(jué)得真是不錯(cuò),所以就做個(gè)小心得報(bào)告,跟Move-to.Net的朋友分享,希望能為各位大大帶來(lái)一丁點(diǎn)在學(xué)習(xí)RE時(shí)的幫助。Jim Hollenhorst大大文章之網(wǎng)址如下,有需要的大大可直接連結(jié)。

  The 30 Minute Regex Tutorial By Jim Hollenhorst

  http://www.codeproject.com/useritems/RegexTutorial.asp

  什么是RE?
  想必各位大大在做文件查找的時(shí)侯都有使用過(guò)萬(wàn)用字符”*”,比如說(shuō)想查找在Windows目錄下所有的Word文件時(shí),你可能就會(huì)用”*.doc”這樣的方式來(lái)做查找,因?yàn)椤?”所代表的是任意的字符。RE所做的就是類似這樣的功能,但其功能更為強(qiáng)大。

  寫程序時(shí),常需要比對(duì)字符串是否符合特定樣式,RE最主要的功能就是來(lái)描述這特定的樣式,因此可以將RE視為特定樣式的描述式,舉個(gè)例子來(lái)說(shuō),”\w+”所代表的就是任何字母與數(shù)字所組成的非空字符串(non-null string)。在.NET framework中提供了非常強(qiáng)大的類別庫(kù),藉此可以很輕易的使用RE來(lái)做文字的查找與取代、對(duì)復(fù)雜標(biāo)頭的譯碼及驗(yàn)證文字等工作。

  學(xué)習(xí)RE最好的方式就是藉由例子親自來(lái)做做看。Jim Hollenhorst大大也提供了一個(gè)工具程序Expresso(來(lái)杯咖啡吧),來(lái)幫助我們學(xué)習(xí)RE,下載的網(wǎng)址是http://www.codeproject.com/useritems/RegexTutorial/ExpressoSetup2_1C.zip。

  接下來(lái),就讓我們來(lái)體驗(yàn)一些例子吧。

  一些簡(jiǎn)單的例子
  假設(shè)要查找文章中Elvis后接有alive的文字符串的話,使用RE可能會(huì)經(jīng)過(guò)下列的過(guò)程,括號(hào)是所下RE的意思:

  1. elvis (查找elvis)

  上述代表所要查找的字符順序?yàn)閑lvis。在.NET中可以設(shè)定乎略字符的大小寫,所以”Elvis”、”ELVIS”或者是”eLvIs”都是符合1所下的RE。但因?yàn)檫@只管字符出現(xiàn)的順序?yàn)閑lvis,所以pelvis也是符合1所下的RE?梢杂2的RE來(lái)改進(jìn)。

  2. \belvis\b (將elvis視為一整體的字查找,如elvis、Elvis乎略字符大小寫時(shí))
“\b”在RE中有特別的意思,在上述的例子中所指的就是字的邊界,所以\belvis\b用\b把elvis的前后邊界界定出來(lái),也就是要elvis這個(gè)字。

  假設(shè)要將同一行里elvis后接有alive的文字符串找出來(lái),此時(shí)就會(huì)用到另外二個(gè)特別意義的字符”.”及”*”。”.”所代表就是除了換行字符的任意字符,而”*”所代表的是重復(fù)*之前項(xiàng)目直到找到符合RE的字符串。所以”.*”所指的就是除了換行字符外的任意數(shù)目的字符數(shù)。所以查找同一行里elvis后接有alive的文字符串找出來(lái),則可下如3之RE。

  3. \belvis\b.*\balive\b (查找elvis后面接有alive的文字符串,如elvis is alive)

  用簡(jiǎn)單之特別字符就可以組成功能強(qiáng)大的RE,但也發(fā)現(xiàn)當(dāng)使用越來(lái)越多的特別字符時(shí),RE就會(huì)越來(lái)越難看得懂了。


再看看另外的例子
  組成有效的電話號(hào)碼

  假使要從網(wǎng)頁(yè)上收集顧客格式為xxx-xxxx的7位數(shù)字的電話號(hào)碼,其中x是數(shù)字,RE可能會(huì)這樣寫。

  4. \b\d\d\d-\d\d\d\d (查找七位數(shù)字之電話號(hào)碼,如123-1234)
  每一個(gè)\d代表一個(gè)數(shù)字!-”則是一般的連字符號(hào),為避免太多重復(fù)的\d,RE可以改寫成如5的方式。

  5. \b\d{3}-\d{4} (查找七位數(shù)字電話號(hào)碼較好的方法,如123-1234)
  在\d后的{3},代表重復(fù)前一個(gè)項(xiàng)目三次,也就是相等于\d\d\d。

  RE的學(xué)習(xí)及測(cè)試工具 Expresso

  因?yàn)镽E不易閱讀及使用者容易會(huì)下錯(cuò)RE的特性,Jim大大開發(fā)了一個(gè)工具軟件Expresso,用來(lái)幫助使用者學(xué)習(xí)及測(cè)試RE,除了上面所述的網(wǎng)址之外,也可以上Ultrapico網(wǎng)站(http://www.Ultrapico.com)。安裝完Expresso后,在Expression Library中,Jim大大把文章的例子都建立在其中,可以邊看文章邊測(cè)試,也可以試著修改范例所下的RE,馬上可以看到結(jié)果,小弟覺(jué)得非常好用。各位大大可以試試。

  .NET中RE的基礎(chǔ)概念
  特殊字符

  有些字符有特別的意義,比如之前所看到的”\b”、”.”、”*”、”\d”等。”\s”所代表的是任意空格符,比如說(shuō)spaces、tabs、newlines等.!盶w”代表是任意字母或數(shù)字字符。

  再看一些例子吧
  6. \ba\w*\b (查找a開頭的字,如able)
  這RE描述要查找一個(gè)字的開始邊界(\b),再來(lái)是字母”a”,再加任意數(shù)目的字母數(shù)字(\w*),再接結(jié)束這個(gè)字的結(jié)束邊界(\b)。

  7. \d+ (查找數(shù)字字符串)
  “+”和”*”非常相似,除了+至少要重復(fù)前面的項(xiàng)目一次。也就是說(shuō)至少有一個(gè)數(shù)字。

  8. \b\w{6}\b (查找六個(gè)字母數(shù)字的字,如ab123c)

  下表為RE常用的特殊字符

  . 除了換行字符的任意字符
  \w 任意字母數(shù)字字符
  \s 任意空格符
  \d 任意數(shù)字字符
  \b 界定字的邊界
  ^ 文章的開頭,如”^The'' 用以表示出現(xiàn)于文章開頭的字符串為”The”
  $ 文章的結(jié)尾,如”End$”用以表示出現(xiàn)在文章的結(jié)尾為”End”
  特殊字符”^”及”$”是用來(lái)查找某些字必需是文章的開頭或結(jié)尾,這在驗(yàn)證輸入是否符合某一樣式時(shí)特別用有,比如說(shuō)要驗(yàn)證七位數(shù)字的電話號(hào)碼,可能會(huì)輸入如下9的RE。

  9. ^\d{3}-\d{4}$ (驗(yàn)證七位數(shù)字之電話號(hào)碼)

  這和第5個(gè)RE相同,但其前后都無(wú)其它的字符,也就是整串字符串只有這七個(gè)數(shù)字的電話號(hào)碼。在.NET中如果設(shè)定Multiline這個(gè)選項(xiàng),則”^”和”$”會(huì)每行進(jìn)行比較,只要某行的開頭結(jié)尾符合RE即可,而不是整個(gè)文章字符串做一次比較。

  轉(zhuǎn)意字符(Escaped characters)

  有時(shí)可能會(huì)需要”^”、”$”單純的字面意義(literal meaning)而不要將它們當(dāng)成特殊字符,此時(shí)”\”字符就是用來(lái)移除特殊字符特別意義的字符,因此”\^”、”\.”、”\\”所代表的就是”^”、”.”、”\”的字面意義。

  重復(fù)前述項(xiàng)目

  在前面看過(guò)”{3}”及”*”可以用來(lái)重復(fù)前述字符,之后我們會(huì)看到如何用同樣的語(yǔ)法重復(fù)整個(gè)次描述(subexpressions)。下表是使用重復(fù)前述項(xiàng)目的一些方式。

  * 重復(fù)任意次數(shù)
  + 重復(fù)至少一次
  ? 重復(fù)零次或一次
  {n} 重復(fù)n次
  {n,m} 重復(fù)至少n次,但不超過(guò)m次
  {n,} 重復(fù)至少n次

  再來(lái)試一些例子吧

  10. \b\w{5,6}\b (查找五個(gè)或六個(gè)字母數(shù)字字符的字,如as25d、d58sdf等)
  11. \b\d{3}\s\d{3}-\d{4} (查找十個(gè)數(shù)字的電話號(hào)碼,如800 123-1234)
  12. \d{3}-\d{2}-\d{4} (查找社會(huì)保險(xiǎn)號(hào)碼,如 123-45-6789)
  13. ^\w* (每行或整篇文章的第一個(gè)字)
  在Espresso可試試有Multiline和沒(méi)Multiline的不同。

  匹配某范圍的字符

  有時(shí)需要查找某些特定的字符時(shí)怎么辨?這時(shí)中括號(hào)”[]”就派上了用場(chǎng)。因此[aeiou]所要查找的是”a”、”e”、”i”、”o”、”u”這些元音,[.?!]所要查找的是”.”、”?”、”!”這些符號(hào),在中括號(hào)中的特殊字符的特別意義都會(huì)被移除,也就是解譯成單純的字面意義。也可以指定某些范圍的字符,如”[a-z0-9]”,所指的就是任意小寫字母或任意數(shù)字。

  接下來(lái)再看一個(gè)比較初復(fù)雜查找電話號(hào)碼的RE例子

  14. \(?\d{3}[( ] \s?\d{3}[- ]\d{4} (查找十位數(shù)字之電話號(hào)碼,如(080) 333-1234 )

  這樣的RE可查找出較多種格式的電話號(hào)碼,如(080) 123-4567、511 254 6654等。”\(?”代表一個(gè)或零個(gè)左小括號(hào)”(“,而”[( ]”代表查找一個(gè)右小括號(hào)”)”或空格符,”\s?”指一個(gè)或零個(gè)空格符組。但這樣的RE會(huì)將類似”800) 45-3321”這樣的電話找出來(lái),也就是括號(hào)沒(méi)有對(duì)稱平衡的問(wèn)題,之后會(huì)學(xué)到擇一(alternatives)來(lái)決解這樣的問(wèn)題。

  不包含在某特定字符組里(Negation)

  有時(shí)需要查找在包含在某特定字符組里的字符,下表說(shuō)明如何做類似這樣的描述。

  \W 不是字母數(shù)字的任意字符
  \S 不是空格符的任意字符
  \D 不是數(shù)字字符的任意字符
  \B 不在字邊界的位置
  [^x] 不是x的任意字符
  [^aeiou] 不是a、e、i、o、u的任意字符

  15. \S+ (不包含空格符的字符串)

  擇一(Alternatives)

  有時(shí)會(huì)需要查找?guī)讉(gè)特定的選擇,此時(shí)”|”這個(gè)特殊字符就派上用場(chǎng)了,舉例來(lái)說(shuō),要查找五個(gè)數(shù)字及九個(gè)數(shù)字(有”-”號(hào))的郵政編碼。

  16. \b\d{5}-\d{4}\b|\b\d{5}\b (查找五個(gè)數(shù)字及九個(gè)數(shù)字(有”-”號(hào))的郵政編碼)

  在使用Alternatives時(shí)需要注意的是前后的次序,因?yàn)镽E在Alternatives中會(huì)優(yōu)先選擇符合最左邊的項(xiàng)目,16中,如果把查找五個(gè)數(shù)字的項(xiàng)目放在前面,則這RE只會(huì)找到五個(gè)數(shù)字的郵政編碼。了解了擇一,可將14做更好的修正。

  17. (\(\d{3}\)|\d{3})\s?\d{3}[- ]\d{4} (十個(gè)數(shù)字的電話號(hào)碼)

  群組(Grouping)

  括號(hào)可以用來(lái)介定一個(gè)次描述,經(jīng)由次描述的介定,可以針對(duì)次描述做重復(fù)或及他的處理。

  18. (\d{1,3}\.){3}\d{1,3} (尋找網(wǎng)絡(luò)地址的簡(jiǎn)單RE)

  此RE的意思第一個(gè)部分(\d{1,3}\.){3},所指的是,數(shù)字最小一位最多三位,并且后面接有”.”符號(hào),此類型的共有三個(gè),之后再接一到三位的數(shù)字,也就是如192.72.28.1這樣的數(shù)字。

  但這樣會(huì)有個(gè)缺點(diǎn),因?yàn)榫W(wǎng)絡(luò)地址數(shù)字最多只到255,但上述的RE只要是一到三位的數(shù)字都是符合的,所以這需要讓比較的數(shù)字小于256才行,但只單獨(dú)使用RE并無(wú)法做這樣的比較。在19中使用擇一來(lái)將地址的限制在所需要的范圍內(nèi),也就是0到255。

  19. ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) (尋找網(wǎng)絡(luò)地址)

  有沒(méi)有發(fā)覺(jué)RE越來(lái)越像外星人說(shuō)的話了?就以簡(jiǎn)單的尋找網(wǎng)絡(luò)地址,直接看RE都滿難理解的哩。

  Expresso Analyzer View

  Expresso提供了一個(gè)功能,它可以將所下的RE變成樹狀的說(shuō)明,一組組的分開說(shuō)明,提供了一個(gè)好的除錯(cuò)環(huán)境。其它的功能,如部分符合(Partial Match只查找反白R(shí)E的部分)及除外符合(Exclude Match只不查找反白R(shí)E的部分)就留給各位大大試試啰。

  當(dāng)次描述用括號(hào)群組起來(lái)時(shí),符合次描述的文字可用在之后的程序處理或RE本身。在預(yù)設(shè)的情型下,所符合的群組是由數(shù)字命名,由1開始,由順序是由左至右,這自動(dòng)群組命名,可在Expresso中的skeleton view或result view中看到。

  Backreference是用來(lái)查找群組中抓取的符合文字所相同的文字。舉例來(lái)說(shuō)”\1”所指符合群組1所抓取的文字。

  20. \b(\w+)\b\s*\1\b (尋找重復(fù)字,此處說(shuō)的重復(fù)是指同樣的字,中間有空白隔開如dog dog這樣的字)
(\w+)會(huì)抓取至少一個(gè)字符的字母或數(shù)字的字,并將它命名為群組1,之后是查找任意空格符,再接和群組1相同的文字。

  如果不喜歡群組自動(dòng)命名的1,也可以自行命名,以上述例子為例,(\w+)改寫為(?<Word>\w+),這就是將所抓取的群組命名為Word,Backreference就要改寫成為\k<Word>
21. \b(?<Word>\w+)\b\s*\k<Word>\b (使用自行命名群組抓取重復(fù)字)

  使用括號(hào)還有許多特別的語(yǔ)法元素,比較通用的列表如下:

  抓取(Captures)
  (exp) 符合exp并抓取它進(jìn)自動(dòng)命名的群組
  (?<name>exp) 符合exp并抓取它進(jìn)命名的群組name
  (?:exp) 符合exp,不抓取它
  Lookarounds
  (?=exp) 符合字尾為exp的文字
  (?<=exp) 符合前綴為exp的文字
  (?!exp) 符合后面沒(méi)接exp字尾的文字
  (?<!exp) 符合前面沒(méi)接exp前綴的文字
  批注Comment
  (?#comment) 批注

  Positive Lookaround

  接下來(lái)要談的是lookahead及l(fā)ookbehind assertions。它們所查找的是目前符合之前或之后的文字,并不包含目前符合本身。這些就如同”^”及”\b”特殊字符,本身并不會(huì)對(duì)應(yīng)任何文字(用來(lái)界定位置),也因此稱做是zero-width assertions,看些例子也許會(huì)清楚些。

  (?=exp)是一個(gè)”zero-width positive lookahead assertion”。它指的就是符合字尾為exp的文字,但不包含exp本身。

  22. \b\w+(?=ing\b) (字尾為ing的字,比如說(shuō)filling所符合的就是fill)
(?<=exp)是一個(gè)”zero-width positive lookbehind assertion”。它指的就是符合前綴為exp的文字,但不包含exp本身。

  23. (?<=\bre)\w+\b (前綴為re的字,比如說(shuō)repeated所符合的就是peated)
  24. (?<=\d)\d{3}\b (在字尾的三位數(shù)字,且之前接一位數(shù)字)
  25. (?<=\s)\w+(?=\s) (由空格符分隔開的字母數(shù)字字符串)

  Negative Lookaround

  之前有提到,如何查找一個(gè)非特定或非在特定群組的字符。但如果只是要驗(yàn)證某字符不存在而不要對(duì)應(yīng)這些字符進(jìn)來(lái)呢?舉個(gè)例子來(lái)說(shuō),假設(shè)要查找一個(gè)字,它的字母里有q但接下來(lái)的字母不是u,可以用下列的RE來(lái)做。

  26. \b\w*q[^u]\w*\b (一個(gè)字,其字母里有q但接下來(lái)的字母不是u)

  這樣的RE會(huì)有一個(gè)問(wèn)題,因?yàn)閇^u]要對(duì)應(yīng)一個(gè)字符,所以若q是字的最后一個(gè)字母,[^u]這樣的下法就會(huì)將空格符對(duì)應(yīng)下去,結(jié)果就有可能會(huì)符合二個(gè)字,比如說(shuō)”Iraq haha”這樣的文字。使用Negative Lookaround就能解決這樣的問(wèn)題。

  27. \b\w*q(?!u)\w*\b (一個(gè)字,其字母里有q但接下來(lái)的字母不是u)
  這是”zero-width negative lookahead assertion”。

  28. \d{3}(?!\d) (三個(gè)位的數(shù)字,其后不接一個(gè)位數(shù)字)

  同樣的,可以使用(?<!exp),”zero-width negative lookbehind assertion”,來(lái)符合前面沒(méi)接exp前綴的文字符串。

  29. (?<![a-z ])\w{7} (七個(gè)字母數(shù)字的字符串,其前面沒(méi)接字母或空格)

  30. (?<=<(\w+)>).*(?=<\/\1>) (HTML卷標(biāo)間的文字)
  這使用lookahead及l(fā)ookbehind assertion來(lái)取出HTML間的文字,不包括HTML卷標(biāo)。

  請(qǐng)批注(Comments Please)
  括號(hào)還有個(gè)特殊的用途就是用來(lái)包住批注,語(yǔ)法為”(?#comment)”,若設(shè)定”Ignore Pattern Whitespace”選項(xiàng),則RE中的空格符當(dāng)RE使用時(shí)會(huì)乎略。此選項(xiàng)設(shè)定時(shí),”#”之后的文字會(huì)乎略。

  31. HTML卷標(biāo)間的文字,加上批注

  (?<=   #查找前綴,但不包含它
  <(\w+)> #HTML標(biāo)簽
  )       #結(jié)束查找前綴
  .*      #符合任何文字
  (?=     #查找字尾,但不包含它
  <\/\1>  #符合所抓取群組1之字符串,也就是前面小括號(hào)的HTML標(biāo)簽
  )       #結(jié)束查找字尾

  尋找最多字符的字及最少字符的字(Greedy and Lazy)
  當(dāng)RE下要查找一個(gè)范圍的重復(fù)時(shí)(如”.*”),它通常會(huì)尋找最多字符的符合字,也就是Greedy matching。舉例來(lái)說(shuō)。

  32. a.*b  (開始為a結(jié)束為b的最多字符的符合字)

  若有一字符串是”aabab”,使用上述RE所得到的符合字符串就是”aabab”,因?yàn)檫@是尋找最多字符的字。有時(shí)希望是符合最少字符的字也就是lazy matching。只要將重復(fù)前述項(xiàng)目的表加上問(wèn)號(hào)(?)就可以把它們?nèi)孔兂蒷azy matching。因此”*?”代表的就是重復(fù)任意次數(shù),但是使用最少重復(fù)的次數(shù)來(lái)符合。舉個(gè)例子來(lái)說(shuō):

  33. a.*?b (開始為a結(jié)束為b的最少字符的符合字)

  若有一字符串是”aabab”,使用上述RE第一個(gè)所得到的符合字符串就是”aab”再來(lái)是”ab”,因?yàn)檫@是尋找最少字符的字。

  *? 重復(fù)任意次數(shù),最少重復(fù)次數(shù)為原則
  +? 重復(fù)至少一次,最少重復(fù)次數(shù)為原則
  ?? 重復(fù)零次或一次,最少重復(fù)次數(shù)為原則
  {n,m}? 重復(fù)至少n次,但不超過(guò)m次,最少重復(fù)次數(shù)為原則
  {n,}? 重復(fù)至少n次,最少重復(fù)次數(shù)為原則

還有什么沒(méi)提到呢?

  到目前為止,已經(jīng)提到了許多建立RE的元素,當(dāng)然還有許多元素沒(méi)有提到,下表整理了一些沒(méi)提到的元素,在最左邊的字段的數(shù)字是說(shuō)明在Expresso中的例子。

  # 語(yǔ)法 說(shuō)明

  \a Bell 字符
  \b 通常是指字的邊界,在字符組里所代表的就是backspace
  \t Tab

  34 \r Carriage return

  \v Vertical Tab
  \f From feed

  35 \n New line
  \e Escape

  36 \nnn ASCII八位碼為nnn的字符

  37 \xnn 十六位碼為nn的字符

  38 \unnnn Unicode為nnnn的字符

  39 \cN Control N字符,舉例來(lái)說(shuō)Ctrl-M是\cM

  40 \A 字符串的開始(和^相似,但不需籍由multiline選項(xiàng))

  41 \Z 字符串的結(jié)尾
  \z 字符串的結(jié)尾

  42 \G 目前查找的開始

  43 \p{name} Unicode 字符組名稱為name的字符,比如說(shuō)\p{Lowercase_Letter} 所指的就是小寫字
  (?>exp) Greedy次描述,又稱之為non-backtracking次描述。這只符合一次且不采backtracking。

  44 (?<x>-<y>exp)

  or (?-<y>exp) 平衡群組。雖復(fù)雜但好用。它讓已命名的抓取群組可以在堆棧中操作使用。(小弟對(duì)這個(gè)也是不太懂哩)

  45 (?im-nsx:exp) 為次描述exp更改RE選項(xiàng),比如(?-i:Elvis)就是把Elvis大乎略大小寫的選項(xiàng)關(guān)掉

  46 (?im-nsx) 為之后的群組更改RE選項(xiàng)。
  (?(exp)yes|no) 次描述exp視為zero-width positive lookahead。若此時(shí)有符合,則yes次描述為下一個(gè)符合標(biāo)的,若否,則no 次描述為下一個(gè)符合標(biāo)的。
  (?(exp)yes) 和上述相同但無(wú)no次描述
  (?(name)yes|no) 若name群組為有效群組名稱,則yes次描述為下一個(gè)符合標(biāo)的,若否,則no 次描述為下一個(gè)符合標(biāo)的。

  47 (?(name)yes) 和上述相同但無(wú)no次描述

  結(jié)論
  經(jīng)過(guò)了一連串的例子,及Expresso的幫忙,相信各位大大對(duì)RE有個(gè)基本的了解,網(wǎng)絡(luò)上當(dāng)然有許多有關(guān)于RE的文章,如果各位大大有興趣http://www.codeproject.com 還有許多關(guān)于RE的相關(guān)文章。若大大對(duì)書有興趣的話,Jeffrey Friedl的Mastering Regular Expressions很多大大都有推(小弟還沒(méi)拜讀)。希望籍由這樣的心得報(bào)告,能讓對(duì)RE有興趣的大大能縮短學(xué)習(xí)曲線,當(dāng)然這是小弟第一次接觸RE,若文章中有什么錯(cuò)誤或說(shuō)明的不好的地方,可要請(qǐng)各位大大體諒,并請(qǐng)各位大大將需要修正的地方mail給小弟,小弟會(huì)非常感謝各位大大。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
国产又大又粗又爽的毛片| 国模精品一区二区| 精品九九九九| 国产一级免费av| 日韩av官网| 亚洲人成网77777色在线播放| 色视频欧美一区二区三区| 欧美精品亚洲二区| 再深点灬舒服灬太大了少妇| 黄色av地址| 91精品国产综合久久精品性色| 久久国产午夜精品理论片最新版本| 国产一区二区免费电影| 精品丝袜久久| 免费毛片一区二区三区久久久| 国产精品自拍视频一区| jizz欧美大全| 老司机久久99久久精品播放免费| 91精品黄色片免费大全| 97精品久久久中文字幕免费| 国产一区 在线播放| 国内精品国产成人国产三级| 亚洲3p在线观看| 最新91在线视频| 亚洲欧美成人影院| 蜜臀精品一区二区三区| 永久免费在线观看视频| 刘亦菲毛片一区二区三区| 亚洲aaa在线观看| 日本r级电影在线观看| 91porn在线观看| 亚洲精品国产a久久久久久| 亚洲免费福利| 日韩精品免费一区二区夜夜嗨| 精品国产一区二区三区免费| 国产美女一区视频| 国产精品无码久久久久| 日本不卡在线观看视频| 136福利视频| 新天天拍日日拍狠狠拍| 91香蕉国产在线观看| 成人av资源网站| 日韩精品视频播放| 日韩高清在线观看一区二区| 欧美肥老太太性生活| 国产一区二区美女视频| 91在线视频18| 色姑娘综合网| 一级毛片在线看| 国产女主播一区二区三区| 国内精品美女在线观看| 久久99精品久久久久久久久久久久| 午夜理伦三级做爰电影| 尤物av一区二区| 五月天婷亚洲天综合网精品偷| 国产激情片在线观看| 中文字幕网址在线| 亚洲人精品午夜射精日韩| 精品久久久三级丝袜| 强制高潮抽搐sm调教高h| 在线看片福利| 99精品在线免费视频| 高清无码一区二区在线观看吞精| 亚洲风情在线资源站| 久久国产精品国产精品| 国产精品欧美色图| 国产激情久久久久久熟女老人av| 国风产精品一区二区| 日本一区二区三区视频在线看| 影音先锋在线资源中文字幕| 国产精品亚洲一区二区无码| 一级性生活免费视频| 午夜影院在线播放| 亚洲国产电影| 国产精品久久久久久久久久尿| 成人97人人超碰人人99| 欧美精品粉嫩高潮一区二区| 免费久久精品视频| 国产一区国产精品| 国产伦精品一区二区三区妓女下载| 精品伦理一区二区三区| 欧美不卡一区二区| 国产精品入口麻豆免费看| 不卡视频一二三| 四虎网站在线观看| 天天干天天干天天干天天| 91精品国产综合久久久蜜臀九色| 2018国产在线| 欧美精品videossex88| 一本到不卡精品视频在线观看| 男人天堂手机在线| 天堂中文av在线资源库| 欧美日韩成人精品| av色男福利网| 黄视频网站在线| 国内精品视频一区二区三区| 99国产精品久久久久久久久久| 天天操 夜夜操| 偷拍一区二区三区| 日本久久精品视频| 国产精品久久久久77777丨| 国产九一视频| 青娱乐在线免费视频| 82av视频| 欧美午夜片欧美片在线观看| 女同互忝互慰dv毛片观看| 在线综合欧美| 欧美娇小性xxxx| 国产一区二区视频在线免费观看| 国产精品毛片在线看| 国产免费黄色录像| 久久午夜精品| 亚洲一区二区三区在线看| 国产成人成网站在线播放青青| 蜜臀av午夜精品久久| 在线综合亚洲欧美在线视频| 影音先锋男人看片资源| 国产日韩欧美大片| 1区2区3区在线| 国产精品无码一区二区在线| 欧美精品成人一区二区三区四区| 亚洲午夜久久久久久久久电影院| 亚洲成人中文| 女女同性女同一区二区三区91| 久久中文视频| 欧美三级在线观看视频| 一区二区自拍偷拍| 久久久久久久久国产精品| 美女胸又www又黄的网站| av黄色免费在线观看| www.男人的天堂.com| www.国产在线视频| 欧美人与性动交| 91热这里只有精品| 亚洲精品一区二区三区av| 欧美在线性爱视频| 国产精品视频中文字幕| 国产成人精品a视频一区www| 亚洲国产成人av在线| 国产在线一区二区| 日韩二区三区在线| 99精品女人在线观看免费视频| 亚洲视频免费一区| 九九热精品视频在线| 桃色av一区二区| 天天射—综合中文网| 日本精品视频| 亚洲直播在线一区| 国精产品乱码一区一区三区四区| 久激情内射婷内射蜜桃| 97涩涩爰在线观看亚洲| 99久re热视频精品98| 欧美一级国产精品| 激情久久av| 一级视频在线观看| 欧美一区二区在线观看视频| 国产乱理伦片在线观看夜一区| 日本一区二区视频在线播放| 手机看片福利视频| 亚欧美在线观看| 成人盗摄视频| 亚洲人成影院在线观看| 亚洲精品成人无码熟妇在线| 同房视频网站| av无码精品一区二区三区宅噜噜| 99久久精品费精品国产一区二区| www毛片com| 久99九色视频在线观看| 91肉色超薄丝袜脚交一区二区| 欧美不卡一区二区三区四区| 99视频在线播放| 91精品久久久久久久久久另类| 色噜噜偷拍精品综合在线| 黄色一级a毛片| 美日韩一二三区| 国产亚洲视频中文字幕视频| 黄色免费网站观看| 国产成人生活片| 亚洲高清免费视频| 99久久综合国产精品| 久久这里只有精品免费| 2020中文字字幕在线不卡| 亚洲欧美精品久久| 精品国产免费一区二区三区香蕉| 91高清视频免费看| 国产精品毛片aⅴ一区二区三区| 亚洲国产精品影院| 91激情视频在线观看| 亚洲情综合五月天| 中文字幕av久久| 精品久久久久久久久久久久| 色无极影院亚洲| 免费xxxxx网站中文字幕| 免费观看亚洲视频| 日韩欧美在线第一页| 成人黄页毛片网站| 黄色羞羞视频在线观看| 成人3d动漫一区二区三区91| 亚洲国产成人91精品| 毛片av免费在线观看| 免费观看一二区视频网站| 免费在线国产| 久久香蕉频线观| 欧美精品一区二区三区久久久竹菊| 免费国偷自产拍精品视频| 欧美成年人视频网站欧美| 亚洲污视频在线观看| 欧美午夜影院| 国产成人久久精品77777综合| 视频一区免费观看| 91在线成人| jizz国产在线| 国产日产在线观看| 成人爽a毛片免费啪啪| 欧美精品另类| 久久免费精品视频在这里| 狠狠躁夜夜躁人人爽超碰91| 亚洲福利在线观看| 精品国产髙清在线看国产毛片| 免费成人在线观看| 成年人二级毛片| 午夜欧美理论片| 蜜臀aⅴ国产精品久久久国产老师| 日韩中文字幕影院| 精品捆绑美女sm三区| 精品伦理一区二区三区| 嘿咻视频在线看| 欧美国产精品v| 国产一区二区三区天码| 激情五月婷婷六月| 国产在线|日韩| 日本在线观看中文字幕| www.国产二区| 久操成人在线视频| 亚洲av无码乱码在线观看性色| 国产日韩欧美一区二区三区四区| 色婷婷成人网| 日韩精品极品毛片系列视频| 国产欧美一区二区| 亚洲人成毛片在线播放女女| 国产精品高清无码在线观看| 国产第一亚洲| 成人亚洲欧美激情在线电影| 欧美在线视频你懂得| 东方av正在进入| 日韩大尺度黄色| 三级在线观看一区二区| 国产精品久久久久77777| 欧美性精品220| 在线视频日韩欧美| 三级国产在线观看| 中文字幕在线一| 麻豆国产在线视频| 免费a级片网站| 国产精品jvid在线观看蜜臀| 日韩簧片在线观看| 亚洲午夜av电影| 你懂的免费在线观看| 国产精品88888| 欧美日韩国产成人| 亚洲精品视频区| 久久精品国产一区二区三区不卡| 精品人妻大屁股白浆无码| 美女搡bbb又爽又猛又黄www| 日韩视频在线免费播放| 人人玩人人添人人澡免费| 国产精品一区二区三区高清在线| 国产系列第一页| 在线观看亚洲视频啊啊啊啊| 神马久久桃色视频| 成人在线app| 日韩午夜视频在线观看| 91久久国产综合久久蜜月精品| 豆花视频一区| 少妇性l交大片7724com| 国产精品久久久久久久午夜| 欧美性潮喷xxxxx免费视频看| 全彩无遮拦全彩口工漫画全彩| 国产日产精品_国产精品毛片| 成年人视频观看| 日本1区2区3区中文字幕| 伊人春色在线观看| 秋霞久久久久久一区二区| 天天摸天天碰天天添| 国产成人精品www牛牛影视| 福利片免费在线观看| 国产波霸爆乳一区二区| 蜜芽视频在线观看| 欧美激情五月| 国产视频高清免费| 欧美国产第一页| 亚洲五码中文字幕| wwwxx日本| 性欧美超级视频| 91蝌蚪精品视频| 亚洲欧美成人综合| 91免费版黄色| 国产亚洲精品一区二区在线观看| 51精品国产| 2020中文字字幕在线不卡| 久久五月激情| 一本色道综合亚洲| 国产乱码精品一区二区三| 亚洲一区二区三区免费观看| 99亚洲乱人伦aⅴ精品| 国产又色又爽又黄刺激在线视频| 免费精品视频在线| 精品国产老师黑色丝袜高跟鞋| 四虎影院观看视频在线观看| 亚洲精品www.| 一级特黄大欧美久久久| 最新日韩一区| 啦啦啦中文在线观看日本| 亚洲精品美女视频| 国产激情无码一区二区三区| 操人视频91| 91欧美一区二区三区| 视频免费在线看| 日韩城人网站| 欧美另类极限扩张| 国产精品成人午夜| 久久久综合激的五月天| 国产中文字字幕乱码无限| 午夜精品一区二区三区在线视| 免费电影日韩网站| 黑人中文字幕一区二区三区| 999在线精品| 国产伦精品一区二区三区千人斩|