Если вам нужен общий случай видео , за которым следует цифра без явного перечисления всех комбинаций, есть пара методов из Enumerable , которые можно использовать в сочетании с обычным выражение.
hash.keys
- это массив ключей из hash
, а ^video\d$
соответствует видео, за которым следует цифра.
# true if the block returns true for any element
hash.keys.any? { |k| k.match(/^video\d$/ }
или
# grep returns an array of the matching elements
hash.keys.grep(/^video\d$/).size > 0
grep
также позволит вам получить соответствующие ключи, если вам нужна эта информация для следующего бита вашего кода, например
if (matched_keys = hash.keys.grep(/^video\d$/)).size > 0
puts "Matching keys #{matched_keys.inspect}"
Кроме того, если префикс ключа, который мы ищем, находится в переменной, а не в жестко закодированной строке, мы можем сделать что-то вроде:
prefix = 'video'
# use an interpolated string, note the need to escape the
# \ in \d
hash.keys.any? { |k| k.match("^#{prefix}\\d$") }