更简洁的红宝石正则表达式

时间:2009-08-23 12:35:13

标签: ruby regex

是否有更简洁或Rubyesque的写作方式:

if ( variable =~ /regex1/ || variable =~ /regex2/ || variable =~ /regex3/ ... )
end

即,我希望能有更短的东西,比如:

if ( variable =~ /regex1/,/regex2/,/regex3/ )

我意识到这不是有效的Ruby代码,但是找个人可能会知道一个更聪明的技巧。

4 个答案:

答案 0 :(得分:6)

[/regex1/,/regex2/,/regex3/].any?{|r| r =~ variable}

答案 1 :(得分:5)

怎么样......

if ( variable =~ /regex1|regex2|regex3/ )
end

答案 2 :(得分:2)

您可以使用开关,或合并表达式(如果可能),或使用查找:

if ([/regex1/, /regex2/].find {|r| v =~ r}) ...

答案 3 :(得分:1)

variable =~ Regexp.union(/regex1/, /regex2/, /regex3/)

这假设你不能使用VoteyDisciple,它会尽可能地发挥作用。