1
def has_word?
text =~ /((Word1)|(Word2))/
end
这就是我现在做的,它的工作原理,但我觉得有一个更好的红宝石解决方案。什么是正确的方法来做到这一点?匹配一组字
def has_word?
text =~ /((Word1)|(Word2))/
end
这就是我现在做的,它的工作原理,但我觉得有一个更好的红宝石解决方案。什么是正确的方法来做到这一点?匹配一组字
您可能有一些特殊情况需要解决,但这些情况并未被当前的方法所覆盖。下面是这些类型的
/Word1|Word2/i
/\b(Word1|Word2)\b/
/^(Word1|Word2)$/
def get_match(strings)
Regexp.new(strings.join("|"))
end
get_match(["Words", "word", "terrible", "one-way", "don't"])
get_match(["week", "month", "year"])
def get_match(strings)
Regexp.new(strings.sort.reverse.join("|"))
end
get_match(["Yes", "Day", "Yesterday", "Daytime"])
@appleLover这是否回答你的问题?如果是这样,请点击答案旁边的复选标记以接受它。复选标记将变绿。 Upvotes也是受欢迎的! –
为什么所有的括号匹配最长的单词? '/ Word1 | Word2 /'(或'/(Word1 | Word2)/'如果你需要捕捉这个单词)将是等同的。 –
这个解决方案对你来说似乎有问题吗?该代码很容易阅读,并且表现相当好(假设没有病理输入)。你想改善什么? –