使用通配符匹配字符串在Ruby中
问题描述:
答
为了节省你的疼痛,你应该使用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
答
之后应该匹配,
\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
这适用于[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