str = 'xyz_1_y1x'
Если хотите первый '1'
,
r = /1/
str[r]
#=> "1"
, который использует метод String # [] . В качестве альтернативы:
str.each_char.find { |c| c == '1' }
#=> `'1'`
Если вы хотите все '1'
, используйте String # scan :
str.scan r
#=> ["1", "1"]
Обратите внимание, что str[r]
эквивалентно определению, содержит ли строка один или несколько символов '1'
, а str.scan(r)
не говорит нам ничего, кроме числа '1'
, содержащегося в строке.
Если вы хотите извлечь любую цифру, измените регулярное выражение: r = /\d/
.