如何扫描多个字符串的文本?

时间:2012-02-29 08:10:07

标签: ruby regex

我正在扫描产品名称以检查其中是否存在特定字符串。现在它适用于单个字符串,但我怎样才能扫描多个字符串?例如我想扫描苹果和微软

product.name.downcase.scan(/apple/)

如果检测到字符串,我会[[apple]] 如果没有,则返回nil []

2 个答案:

答案 0 :(得分:5)

您可以使用regex alternation

product.name.downcase.scan(/apple|microsoft/)

如果您需要知道的是字符串是否包含任何指定的字符串,则最好使用单个匹配=~而不是scan

str = 'microsoft, apple and microsoft once again'

res = str.scan /apple|microsoft/ # => res = ["microsoft", "apple", "microsoft"]
# do smth with res

# or
if str =~ /apple|microsoft/
  # do smth
end

答案 1 :(得分:2)

你也可以完全跳过正则表达式:

['apple', 'pear', 'orange'].any?{|s| product.name.downcase.match(s)}

['apple', 'pear', 'orange'].any?{|s| product.name.downcase[s]}