2012-11-14 133 views
-1

我正在使用Ruby來執行簡單的子字符串類型匹配。我試圖理解爲什麼會發生以下情況:正則表達式查詢

irb(main):024:0> puts "match" if "foo" =~ /foo/ 
match 
=> nil 
irb(main):025:0> puts "match" if "foo" =~ /foo,/ 
=> nil 

這怎麼能正則表達式進行修改,這樣,如果搜索標準的任何部分「富」,相匹配的匹配時?

+1

你的第一個正則表達式有什麼問題? – oldergod

+4

我想你可能會混淆是哪個字符串被匹配,哪個是正則表達式。 /之間的位是正則表達式。 –

回答

1

你有你比較落後:

"foo".match(/foo,/) # See if "foo" matches the pattern "foo," 
# => nil 
"foo,".match(/foo/) # See if "foo," matches the pattern "foo" 
# => #<MatchData "foo"> 

=~操作有點歷史已經跌出的風格,因爲它不言自明。

-2

您可以使用字符串的掃描方法,並通過您想檢查的正則表達式。

1.9.3p194 :008 > puts "match" if "foo".scan(/foo,/) 
match 
=> nil 
+1

這沒有任何意義。 'scan'將總是返回一個數組,甚至是一個空數組,在這種情況下。 – tadman

+0

當更多直接的正則表達式檢查可用時,它也是'scan'的一個糟糕用法。 –