我在名为mib.txt的文件中有以下字符串:
[name=1.3.6.1.2.1.1.5.0, value=myrouter.ad.local (OCTET STRING)]
命名以下代码:
f = File.read("/temp/mib.txt")
name = f.match(/1.3.6.1.2.1.1.5.0/)
puts "device name is #{name}"
它就像我要求的那样返回1.3.6.1.2.1.1.5.0
,但我真正想要的是找到包含1.3.6.1.2.1.1.5.0
的字符串并解析值myrouter。
答案 0 :(得分:1)
您始终可以使用scan
:
>> name = f.scan(/1.3.6.1.2.1.1.5.0, value=(\w+)/).flatten.to_s
=> "myrouter"
如果你想要ad.local
部分,那么请改为:
>> name = f.scan(/1.3.6.1.2.1.1.5.0, value=([\w\.]+)/).flatten.to_s
=> "myrouter.ad.local"
答案 1 :(得分:1)
您必须扩展正则表达式以捕获正则表达式组中的值。
s = File.read("/temp/mib.txt")
m = s.match /\[name=1.3.6.1.2.1.1.5.0, value=([\S]+) \(OCTET STRING\)/
puts "device name is #{m[1]}"