Получить строку, соответствующую регулярному выражению - PullRequest
0 голосов
/ 18 августа 2010

У меня есть следующая строка в файле с именем 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 ]

1 голос
/ 18 августа 2010

Вы должны расширить свое регулярное выражение, чтобы поймать значение внутри группы регулярных выражений.

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]}"
1 голос
/ 18 августа 2010

Вы всегда можете использовать 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...