более краткий рубиновый регулярное выражение - PullRequest
1 голос
/ 23 августа 2009

Есть ли более лаконичный или рубеский способ написания этого:

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

А именно, я надеюсь на что-то более короткое, например:

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

, который, как я понимаю, не является допустимым кодом Ruby, но, полагая, кто-то знает более хитрый трюк

Ответы [ 4 ]

6 голосов
/ 23 августа 2009
[/regex1/,/regex2/,/regex3/].any?{|r| r =~ variable}
5 голосов
/ 23 августа 2009

Как насчет ...

if ( variable =~ /regex1|regex2|regex3/ )
end
2 голосов
/ 23 августа 2009

Вы можете использовать переключатель, или объединить выражения (если это возможно), или использовать поиск:

if ([/regex1/, /regex2/].find {|r| v =~ r}) ...
1 голос
/ 23 августа 2009
variable =~ Regexp.union(/regex1/, /regex2/, /regex3/)

Предполагается, что вы не можете использовать функцию VoteyDisciple, которая будет наиболее разумной там, где это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...