2014-02-25 61 views
1

需要匹配字符串中所有模式的幫助。Ruby - 匹配字符串中的所有模式

s1 = " countries like US, Japan, Korea, Vietnam, Germany" 
s2 = " countries like Holland, China, Korea, Thailand, UK" 

從上面的字符串需要匹配特定的亞洲國家

regex = /(Japan)|(Korea)|(Vietnam)|(Cambodia)|(China)|(Thailand)/ 


irb(main):157:0> s1.match(regex) 
=> #<MatchData "Japan" 1:"Japan" 2:nil 3:nil 4:nil> 

有沒有辦法讓下面的輸出?

s1.some_regex_operation # => Japan, Korea, Vietnam 
s2.some_regex_operation # => China, Korea, Thailand 
+0

你的問題不明確。您是否希望將這些國家的連續出現次數匹配爲單個字符串,還是希望在整個字符串中匹配此類國家/地區的任何實例? – sawa

+0

希望匹配上面提到的示例字符串輸出。這是一個字符串中的所有事件。 – user3206440

回答

5

使用String#scan

s1 = " countries like US, Japan, Korea, Vietnam, Germany" 
s2 = " countries like Holland, China, Korea, Thailand, UK" 
s1.scan(/Japan|Korea|Vietnam|Cambodia|China|Thailand/) 
# => ["Japan", "Korea", "Vietnam"] 
s2.scan(/Japan|Korea|Vietnam|Cambodia|China|Thailand/) 
# => ["China", "Korea", "Thailand"] 
+0

這可能是也可能不是正確的答案。 OP不清楚這一點。這是OP的錯。 – sawa

+0

@sawa雖然這個複選標記似乎清除了歧義。 –