麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

詳解Ruby中正則表達(dá)式對字符串的匹配和替換的操作方法

2020-02-24 15:37:10
字體:
供稿:網(wǎng)友

正則表達(dá)式是通過使用特殊語法的模式來匹配或查找其他字符串或字符串集的特殊字符序列,今天是武林技術(shù)頻道小編為大家介紹的詳解Ruby中正則表達(dá)式對字符串的匹配和替換的操作方法。

正則匹配

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

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

ruby;">message="afhadhffkdf414j" regex=/[a-z](/d{3})[a-z]/ puts regex=~message message="afhadhffkdf414j" regex=/[a-z](/d{3})[a-z]/ puts regex=~message 

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

那下面我們來看看match吧:

message="afhadhffkdf414j" regex=/[a-z](/d{3})[a-z]/ puts regex.match(message)  message="afhadhffkdf414j" regex=/[a-z](/d{3})[a-z]/  puts regex.match(message) 

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

message="afhadhffkdf414j" regex=/[a-z](/d{3})[a-z]/ regex.match(message) puts $1  message="afhadhffkdf414j" regex=/[a-z](/d{3})[a-z]/ regex.match(message) puts $1 

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

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

?
它是輸出的該對象信息。

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

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

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

Theresultis414 Theresultis223 Theresultis123  Theresultis414 Theresultis223 Theresultis123 

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

正則表達(dá)式的分組

可以對正則表達(dá)式進(jìn)行分組,并在匹配成功后把分組的值存儲(chǔ)到$1,$2,$3,$4.......

print $1,"/n",$2 if "a1b2c3d4e5" =~ /(/w{2})(/w*)/ 

字符串的正則替換:

print "abcd".sub(//w/,"9") print "/n"  print "abcd".gsub(//w/,"9") 


正則中的特殊全局變量:

  • ??? $1,$2,$3....分組匹配文本
  • ??? $`?? 匹配文本之前的文本
  • ??? $'??? 匹配文本之后的文本
print <pre name="code" class="ruby">,"/n",{1},"/n", if "ab9cd" =~ //d/ 

?

上文是武林技術(shù)頻道小編介紹的詳解Ruby中正則表達(dá)式對字符串的匹配和替換的操作方法,大家都了解了嗎?小編希望大家認(rèn)真閱讀分享出來的知識(shí),這些內(nèi)容都是經(jīng)過篩選才和大家分享的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 欧美成人免费电影 | 亚洲综合一区在线观看 | 九色国产| 黄视频免费观看 | 国产精品久久久久久久模特 | 噜噜社 | 毛片大全在线观看 | 久久久精品视 | 黄视频网站免费观看 | 久久精品99久久久久久2456 | 亚洲第一成av人网站懂色 | h视频免费在线 | 欧美性受ⅹ╳╳╳黑人a性爽 | 911色_911色sss主站色播 | 日日操夜夜透 | 欧美成人免费在线视频 | 国产亚洲精品综合一区 | 国产精品久久久久久久久久久久久久久 | 毛片免费在线播放 | 国产精品剧情一区二区三区 | 欧美日韩亚洲一区二区三区 | 欧美久久久一区二区三区 | 欧美一级毛片一级毛片 | 天海翼四虎精品正在播放 | 精品久久一区二区三区 | 久久久久久麻豆 | 日日艹夜夜艹 | 国产中出在线观看 | 成人免费福利视频 | 一级黄色淫片 | 成人在线视频一区 | 黄色aaa视频| av在线等 | 中文字幕 亚洲一区 | 成人免费视频视频在线观看 免费 | 国产成年人网站 | 久草导航 | 成人免费网站在线观看视频 | 亚洲精品久久久久久久久久 | av免费在线观看免费 | 黄色毛片18 |