我認爲這個問題可能很有趣,把它放在這裏。正則表達式匹配字符串中的每個單詞而不管空格或連字符?
比如我有喜歡的搜索查詢字符串:"hello world"
有可能是字符串這樣的:
Hello World
Hello-world
hello!! world
你怎麼能寫,將動態匹配這些表達式?如果表達式起作用,它也應該適用於此:
Search: "Hi pals!"
Hi pals
Hi! Pals!
Hi-pals
這可能嗎?
我認爲這個問題可能很有趣,把它放在這裏。正則表達式匹配字符串中的每個單詞而不管空格或連字符?
比如我有喜歡的搜索查詢字符串:"hello world"
有可能是字符串這樣的:
Hello World
Hello-world
hello!! world
你怎麼能寫,將動態匹配這些表達式?如果表達式起作用,它也應該適用於此:
Search: "Hi pals!"
Hi pals
Hi! Pals!
Hi-pals
這可能嗎?
當然,你可以做這樣的事情:
/hi.*?pals/i
的末尾i
能夠區分大小寫的匹配,以及.*?
任何字符"hi"
和"pals"
之間匹配(除換行符)。
一個Rubular演示:http://rubular.com/r/cwtbV2iTwy
當心,這也符合像「喜馬拉雅好朋友」的字符串:
Himalaya pals
^^ ^^^^
如果你不希望這樣的事情發生,在添加一些文字邊界混合:
/\bhi\b.*?\bpals\b/i
想必你不希望「喜好朋友」,以配合「智麻痹」,或者說,對不對?似乎你正在試圖找到與你的輸入有相同單詞的字符串。如果是這樣,這裏是一個方法:
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?"]
有沒有辦法讓它動態?這絕對不會匹配hello world – DucDigital
嗯,你可以這樣做:'/ hi。*?pals | hello。*?world/i'匹配兩個問候。雖然不清楚_dynamic_的含義 –