我有一组段落和一组关键字。我希望遍历段落数组,并为包含我所有关键字的元素返回true。关键字可以是任何顺序,但必须在同一段落中找到所有关键字,才能使其为true,而不仅仅是其中的一部分。
有没有一种方法可以在没有=~ regex1 && =~ regex2 && =~ regex3 && =~ regex4的情况下使用一个Regexp.union或一个正则表达式来完成这项工作?
发布于 2015-03-16 14:37:17
如果模式数组只包含关键字而不包含模式:
str = "foo went to bar with abc and xyz"
pats = ["abc","xyz","foo","bar"]
pats.all? { |e| str.include?(e) }
# => true
pats = ["abc","xyz","foo","bar", "no"]
pats.all? { |e| str.include?(e) }
# => false如果模式数组包含模式:
pats = [/abc/, /xyz$/, /^foo/, /bar/]
pats.all? { |e| str =~ e }
# => true
pats = [/abc/, /xyz$/, /^foo/, /bar/, /no/]
pats.all? { |e| str =~ e }
# => falsehttps://stackoverflow.com/questions/29070760
复制相似问题