成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

捕捉Ruby正則表達式用法精髓

開發 后端
正則表達式作為一個強大的匹配語言已經越來越多的使用到不同的領域當中,文章將介紹Ruby正則表達式的兩種常用的匹配方式,并分析了兩種匹配方式的區別。

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

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

  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當中是用//來表示正則表達式匹配語句的。大家可以運行一下,上面的語句是匹配三個數字兩邊都是小寫字母的一個字符串。我們運行上面代碼,將會出現結果10.你一定很奇怪,為什么會出現10這個結果,這就是=~的魅力,他是將匹配結果的首次出現位置打印出來。

那下面我們來看看match吧:

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

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

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

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

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

它是輸出的該對象信息。

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

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

很簡單,結果就是:

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

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

【編輯推薦】

  1. Ruby正則表達式與Perl相似之處頗多
  2. Ruby正則表達式示例講解
  3. Ruby基礎代碼經驗分享
  4. 幾種常見Ruby核心類概念總結
  5. Ruby常用庫基礎語法詳解
責任編輯:王曉東 來源: 博客園
相關推薦

2009-12-14 11:33:59

Ruby正則表達式

2010-07-14 09:37:46

Perl正則表達式

2010-07-19 10:40:16

Perl正則表達式

2010-08-09 13:58:59

Flex正則表達式

2016-12-05 17:03:59

用法正則表達式

2010-08-12 10:35:06

Flex正則表達式

2018-09-27 15:25:08

正則表達式前端

2020-09-04 09:16:04

Python正則表達式虛擬機

2024-09-14 09:18:14

Python正則表達式

2010-03-25 18:25:36

Python正則表達式

2017-05-12 10:47:45

Linux正則表達式程序基礎

2022-03-28 06:19:14

正則表達式開發

2021-01-27 11:34:19

Python正則表達式字符串

2009-02-18 09:48:20

正則表達式Java教程

2019-07-17 15:45:47

正則表達式字符串前端

2009-09-16 18:19:34

正則表達式組

2011-06-02 12:34:16

正則表達式

2009-12-18 13:57:35

Ruby正則表達式

2016-11-10 16:21:22

Java 正則表達式

2009-09-16 17:15:57

正則表達式引擎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本久久久久久 | 亚洲精品白浆高清久久久久久 | 天天色综 | 超碰97免费| 久久国产婷婷国产香蕉 | 日韩小视频 | 成人午夜在线 | 亚洲国产18 | 伊人中文字幕 | 久久久久91| 久色网| 久久香蕉精品视频 | 97人人超碰 | h片免费看 | 久久精品国产99国产精品 | 国产一区电影 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美一区二区三区视频 | 欧美日韩一本 | 午夜精品视频在线观看 | 欧美xxxx日本 | а天堂中文最新一区二区三区 | 91视频在线 | www.xxxx欧美| 91大片| 中文字幕国产精品 | 精品久久久久久国产 | 欧美日韩一区二区三区四区 | 一区二区三区欧美 | 精品久久久久久久久久久久久久久久久 | 红桃视频一区二区三区免费 | 一区二区三区久久 | 在线国产一区二区 | 日韩欧美国产综合 | 亚洲成人播放器 | 天堂一区二区三区 | 国产一区二区高清在线 | 日韩成人精品 | 干出白浆视频 | 亚洲精品一区二区三区在线观看 | 国产精品亚洲二区 |