[Ruby]如何在单个字符串行中搜索多个关键字

时间:2013-09-13 00:51:54

标签: ruby search keyword

我是红宝石的新手。我想知道如何在一行中查找是否存在多个关键字。例如,一行“Hello,你好吗?”,如果“Hello”或“how”退出,则返回true。 我尝试使用reg exp像/ Hello | how /,但是当有很多行要处理时性能不好。 也许Regexp适合这个用例,但我在谷歌找不到具体的例子。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

keywords = {
  "Hello" => true,
  "how" => true,
}
  • 关键字

    的示例
    "Hello, how are you?".scan(/\w+/).any?{|k| keywords.key?(k)}    # => true
    
  • 没有关键字的示例

    "hello, who are you?".scan(/\w+/).any?{|k| keywords.key?(k)}    # => false
    

答案 1 :(得分:-1)

要检查字符串中是否至少有一个关键字,请执行:

keywords = ["hello", "how"]
r = Regexp.new(keywords.join("|")) # case-sensitive
r.match("Hello, how are you?").nil? => false
r.match("no keywords exist").nil? => true

要获得更快的正则表达式,请使用https://github.com/mudge/re2。它是Googles re2 https://code.google.com/p/re2/

的红宝石包装纸