根据一个地址有效地检查多个IP地址



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()));

最新更新