日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
捕捉Ruby正則表達(dá)式用法精髓

說起Ruby當(dāng)然要提起它的正則表達(dá)式機(jī)制,正則表達(dá)式作為一個強(qiáng)大的匹配語言已經(jīng)越來越多的使用到不同的領(lǐng)域當(dāng)中,從字符串驗(yàn)證,匹配,到網(wǎng)頁抽取等。雖然有些人詬病與正則表達(dá)式的匹配效率,但是考慮到正則的強(qiáng)大匹配能力也就無所謂了。

閬中網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,閬中網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為閬中近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的閬中做網(wǎng)站的公司定做!

說起Ruby正則表達(dá)式不就不能不說起Ruby的=~和match兩種匹配方式,我們還是用實(shí)例來說明一下這兩種匹配方式的區(qū)別吧。先來說一說=~的用法吧:

 
 
 
  1. message="afhadhffkdf414j"
  2. regex=/[a-z](\d{3})[a-z]/
  3. putsregex=~message
  4. message="afhadhffkdf414j"
  5. regex=/[a-z](\d{3})[a-z]/
  6. putsregex=~message

在Ruby當(dāng)中是用//來表示正則表達(dá)式匹配語句的。大家可以運(yùn)行一下,上面的語句是匹配三個數(shù)字兩邊都是小寫字母的一個字符串。我們運(yùn)行上面代碼,將會出現(xiàn)結(jié)果10.你一定很奇怪,為什么會出現(xiàn)10這個結(jié)果,這就是=~的魅力,他是將匹配結(jié)果的首次出現(xiàn)位置打印出來。

那下面我們來看看match吧:

 
 
 
  1. message="afhadhffkdf414j"
  2. regex=/[a-z](\d{3})[a-z]/
  3. putsregex.match(message)
  4. message="afhadhffkdf414j"
  5. regex=/[a-z](\d{3})[a-z]/
  6. putsregex.match(message)

我們來看看輸出結(jié)果吧:f414j。該字符串表示的正則語句匹配的所有符合規(guī)則的結(jié)果集。不知道大家注意到?jīng)],我們在正則表達(dá)式里面用到了括號,我們希望抽取出三個數(shù)字就可以了。當(dāng)然這也很簡單,我們只需要在上面的代碼當(dāng)中稍作修改即可:

 
 
 
  1. message="afhadhffkdf414j"
  2. regex=/[a-z](\d{3})[a-z]/
  3. regex.match(message)
  4. puts$1
  5. message="afhadhffkdf414j"
  6. regex=/[a-z](\d{3})[a-z]/
  7. regex.match(message)
  8. puts$1

結(jié)果自然是414.為什么要使用$1而不是$0呢,我們看看$0的結(jié)果吧。

 
 
 
  1. C:/Users/Administrator/Documents/NetBeansProjects/RubyApplication1/lib/regex.rb

它是輸出的該對象信息。

下面又出現(xiàn)了一個新的情況,假設(shè)一個字符串當(dāng)中有很多符合規(guī)則的信息怎么辦呢。上面的語句只能匹配出最先找到的結(jié)果,而我們需要把所有的結(jié)果都打印出來怎么辦呢?剛開始我受java的影響,認(rèn)為match的結(jié)果會是一個集合,所以怎么考慮也沒有整出來。后來發(fā)現(xiàn)有一個scan方法。代碼如下所示:

 
 
 
  1. message="afhadhffkdf414j9tr3j43i3433094jwoert223jwew123dfdf"
  2. regex=/[a-z](\d{3})[a-z]/
  3. message.scan(regex).each{|m|puts"Theresultis#{m[0]}"}
  4. message="afhadhffkdf414j9tr3j43i3433094jwoert223jwew123dfdf"
  5. regex=/[a-z](\d{3})[a-z]/
  6. message.scan(regex).each{|m|puts"Theresultis#{m[0]}"}

很簡單,結(jié)果就是:

 
 
 
  1. Theresultis414
  2. Theresultis223
  3. Theresultis123
  4. Theresultis414
  5. Theresultis223
  6. Theresultis123

怎么樣,很方便吧。很簡單的就把所有的匹配結(jié)果都抽取出來了。


本文題目:捕捉Ruby正則表達(dá)式用法精髓
URL分享:http://m.5511xx.com/article/ccdspii.html