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

问题描述:

我有一些IP地址:使用通配符匹配字符串在Ruby中

127.0.0.1 
192.168.* 
200.* 

我怎么能简单快速,轻松地比赛反对这些范围内指定的IP地址。可能有成千上万的模式,如上所述。

为了节省你的疼痛,你应该使用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解析这些。

有了ip地址的宝石,然后你可以做这样的事情(未经测试):

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

这适用于[IPADDR(HTTP相同:// WWW .ruby-doc.org/stdlib-1.9.3/libdoc/ipaddr/rdoc/IPAddr.html#method-i-include-3F)来自stdlib。 – steenslag 2012-02-14 16:29:45

之后应该匹配,

\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