2011-07-31 20 views

回答

3

當然,你可以做這樣的事情:

/hi.*?pals/i 

的末尾i能夠區分大小寫的匹配,以及.*?任何字符"hi""pals"之間匹配(除換行符)。

一個Rubular演示:http://rubular.com/r/cwtbV2iTwy

當心,這也符合像「喜馬拉雅好朋友」的字符串:

Himalaya pals 
^^  ^^^^ 

如果你不希望這樣的事情發生,在添加一些文字邊界混合:

/\bhi\b.*?\bpals\b/i 
+0

有沒有辦法讓它動態?這絕對不會匹配hello world – DucDigital

+0

嗯,你可以這樣做:'/ hi。*?pals | hello。*?world/i'匹配兩個問候。雖然不清楚_dynamic_的含義 –

2

想必你不希望「喜好朋友」,以配合「智麻痹」,或者說,對不對?似乎你正在試圖找到與你的輸入有相同單詞的字符串。如果是這樣,這裏是一個方法:

class String 
    def words 
    scan(/\w+/).map(&:downcase) 
    end 
end 

a = ["Hi pals", "Hi, pals", "hi-pals", "hi! ? pals?", "hipals", "himalaya pals"] 
search = "hi pals" 

a.select {|test| test.words == search.words} 

=> ["Hi pals", "Hi, pals", "hi-pals", "hi! ? pals?"] 
相關問題