在Ruby中使用通配符匹配字符串

时间:2012-02-14 09:29:54

标签: ruby

我有一些IP地址:

127.0.0.1
192.168.*
200.*

如何快速轻松地将给定的IP地址与这些范围进行匹配。可能存在数千种模式,如上所述。

2 个答案:

答案 0 :(得分:3)

为了避免痛苦,您应该使用CIDR addresses而不是字符串通配符。这是网络和理智的IP范围的普遍接受的符号。您可以在任何语言中找到对此表示法的广泛支持。

在您的情况下,网络将是

127.0.0.1/32 (or just simply 127.0.0.1)
192.168.0.0/16
200.0.0.0/8

您可以使用类似内置IPAddr类或IPAddress gem的内容来解析这些内容。

使用IPAddress gem,您可以执行以下操作(未经测试):

range = IPAddress("192.168.0.0/16")
ip = IPAddress("192.168.3.5")
range.include? ip # returns true

答案 1 :(得分:0)

以下应该匹配,

\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b