Ruby では、

re = /([^h]+)h([^m]+)m/

# str = "1h0m"
str = "1.5h0m"

md = str.match( re )
# p md[ 1 ], md[ 2 ] #=> capture 部分

begin # 整数じゃなければ、浮動小数点にする
hour = Integer( md[ 1 ] )
rescue ArgumentError
hour = Float( md[ 1 ] )
end

minute = md[ 2 ].to_i # 整数

p hour, minute #=> 1.5, 0