Ruby正则表达式匹配数据到整数转换

2 ruby regex

我有一个字符串,从*nix"hostname"命令填充,我需要解析一个数字.这很容易.困难来自于需要对捕获的数字进行数学运算(tm).显然,正则表达式捕获始终是MatchData类型,它没有任何数学函数,如"add"或"modulo",也没有".to_i"方法.目前,为了对我捕获的数字执行Math(tm),我需要使用MatchData的.to_s方法将捕获转换为字符串,然后使用String的.to_i使其成为整数.我的问题是,有什么更好的方法呢?

hostname = "webserver1337.mycorp.com"
number = hostname.match(/[a-z]+/) 

puts "#{number}, with class #{number.class}" # prints '1337, with class MatchData'

somevar = number + 1 # this will fail horribly

temp1 = number.to_s
number = temp1.to_i

someothervar = number + 1

puts "#{number}, #{someothervar} with class #{number.class}" # prints '1337, 1338 with class FixNum'
Run Code Online (Sandbox Code Playgroud)

这......有点难看.是否有更好/更清洁的方法来实现同样的目标?

FMc*_*FMc 7

MatchData对象将使用返回匹配中包含的字符串[].例如:

hostname = "webserver1337.mycorp.com"
m = hostname.match( /([a-z]+)(\d+)/ ) 
number = m[2].to_i + 1
p m[0], m[1], m[2], number
Run Code Online (Sandbox Code Playgroud)

要做到这一点:

number = hostname.match(/\d+/)[0].to_i + 1
Run Code Online (Sandbox Code Playgroud)