获取与正则表达式匹配的行

时间:2010-08-18 16:35:45

标签: ruby regex

我在名为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。

2 个答案:

答案 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]}"