2009-09-12 97 views
3

我明白如何檢查字符串中的模式與紅寶石正則表達式。我感到困惑的是如何將字符串中找到的模式保存爲單獨的字符串。Ruby的正則表達式

我以爲我可以這樣說:

if string =~ /regexp/ 
    pattern = string.grep(/regexp/) 

,然後我可能會繼續我的生活。但是,這不像預期的那樣工作,並且正在返回整個原始字符串。有什麼建議?

回答

6

您正在尋找紅寶石string.match()

irb(main):003:0> a 
=> "hi" 
irb(main):004:0> a=~/(hi)/ 
=> 0 
irb(main):005:0> a.match(/hi/) 
=> #<MatchData:0x5b6e8> 
irb(main):006:0> a.match(/hi/)[0] 
=> "hi" 
irb(main):007:0> a.match(/h(i)/)[1] 
=> "i" 
irb(main):008:0> 

而且對於你剛纔在如果條件符合,您可以使用$&$1 .. $9$~爲這樣的工作:

irb(main):009:0> if a =~ /h(i)/ 
irb(main):010:1> puts("%s %s %s %s"%[$&,$1,$~[0],$~[1]]) 
irb(main):011:1> end 
hi i hi i 
=> nil 
irb(main):012:0> 
+0

作品,欣賞它 – Atreides 2009-09-12 03:29:29