在 Java 中使用正则表达式获取 InetAddress 列表

Get InetAddress list using regexp in Java

有没有办法使用正则表达式来获取 IP 地址列表?在我的例子中,系统中为每个设备接口定义了用数字定义的别名,我需要使用别名获取列表。对于测试系统,所有别名都可以映射到同一设备,而在生产中它会有所不同。

例如,我可以将 traffic1、traffic2、traffic3 等映射到生产中的 eth0、eth1 等。在测试中,所有 trafficX 都可以映射到 eth0。

有没有办法通过传递流量*或类似的东西来获取所有 IP 地址的列表?

此方法读取 /etc/hosts 并搜索模式:

private static InetAddress[] listIPs(String re) throws IOException {
    Pattern pat = Pattern.compile(re);
    try (InputStream stream = new FileInputStream("/etc/hosts");
            Reader reader = new InputStreamReader(stream, "UTF-8");
            BufferedReader in = new BufferedReader(reader)) {
        Set<InetAddress> result = new HashSet<>();
        String line = in.readLine();
        while (line != null) {
            String[] fields = line.split("\s+");
            boolean found = false;
            for (int i = 1; !found && i < fields.length; ++i) {
                found = pat.matcher(fields[i]).matches();
            }
            if (found) {
                result.add(InetAddress.getByName(fields[0]));
            }
            line = in.readLine();
        }
        return result.toArray(new InetAddress[result.size()]);
    }
}    

在您的示例中,您可以传递 "traffic[0-9]+" 例如。