i有一个IP地址列表作为字符串,并且是字符串格式的Adress,可以检查这些地址。我的目标是找到我的地址是否在列表中。为了使这种情况变得困难,这些IP地址不是完全的压力,而是正则表达式。例如10 .25 .3
在单个字符串上运行数百个正则表达式的最有效方法是什么?管道吗?搜索树?一个可以帮助我的特定Java容器?你有什么建议吗?
编辑:我可以在处理之前将地址列表转换为任何内容列表,这无关紧要。
您可以尝试使用最初是成熟WHOIS服务器的一部分的库来快速找到匹配项。它允许您建造一棵树,并以极其有效的方式导航树。
示例:
// create & populate whitelist/blacklist tree
NestedIntervalMap<Ipv4Resource, Boolean> map = new NestedIntervalMap<>();
map.put(Ipv4Interval.parse("192.168/19"), true);
map.put(Ipv4Interval.parse("192.168.52.1"), false);
map.put(Ipv4Interval.parse("0/0"), false);
// lookup if incoming IP is allowed to connect
boolean allow = map.findFirstLessSpecific(new Ipv4Interval(incomingSocket.getInetAddress()));