Ruby resolv库如何排除非IPv4地址

Ruby resolv库如何排除非IPv4地址,ruby,resolv,Ruby,Resolv,我想使用库解析主机名,包括“localhost”,但它也列出了非IPv4地址。我想找出第一个IPv4地址。查看了图书馆,但找不到这样做的方法。有人知道这样做的方法吗?或者我们应该使用其他gem,如Net:DNS或dnsruby吗?如果我理解正确,您可以使用Resolv::IPv4::Regexp和Resolv::IPv6::Regexp查看示例: => require 'resolv' => p Resolv.getaddress "www.ruby-lang.org" #>

我想使用库解析主机名,包括“localhost”,但它也列出了非IPv4地址。我想找出第一个IPv4地址。查看了图书馆,但找不到这样做的方法。有人知道这样做的方法吗?或者我们应该使用其他gem,如Net:DNS或dnsruby吗?

如果我理解正确,您可以使用
Resolv::IPv4::Regexp
Resolv::IPv6::Regexp
查看示例:

=> require 'resolv'
=> p Resolv.getaddress "www.ruby-lang.org"
#> "23.23.144.121"
=> ip = "23.23.144.121"
=> ip =~ Resolv::IPv4::Regex
#> 0
=> ip =~ Resolv::IPv6::Regex
#> nil
=> case ip
=> when Resolv::IPv4::Regex
=> puts "It's a valid IPv4 address."
=> when Resolv::IPv6::Regex
=> puts "It's a valid IPv6 address."
=> else
=> puts "It's not a valid IP address."
=> end
#> It's a valid IPv4 address.

从您链接的页面判断,您不能在地址列表上执行类似于
ips.reject{| ip | ip.is|a?Resolv::IPv6}
的操作吗。在您的链接页面上,该页面位于示例中的
ress.map{| r | r.address}
之后。