Parsing 用Java从字符串打印IP地址和子网掩码

Parsing 用Java从字符串打印IP地址和子网掩码,parsing,ip-address,Parsing,Ip Address,我使用以下表达式从每个字符串中获取IP和子网: Pattern pattern = Pattern.compile("([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5]) ([2-5]\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d

我使用以下表达式从每个字符串中获取IP和子网:

 Pattern pattern = Pattern.compile("([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5]) ([2-5]\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d)");
   Matcher match = pattern.matcher(inpS);
   while(match.find()) {
     System.out.println("\nIP found: "+match.group() );
问题是有时它会显示正确的结果,例如。 找到的IP:10.181.0.255.255.255.128

但有时不显示子网掩码中的最后一位,例如: 找到的IP:10.181.0.251 255.255.255.24


有什么问题吗?

我在O'Reilly的正则表达式食谱(第470页)中找到了以下正则表达式:

Pattern pattern = Pattern.compile("(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"+" (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])");

我在O'Reilly的正则表达式食谱(第470页)中找到了以下正则表达式:

Pattern pattern = Pattern.compile("(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"+" (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])");

[01]?\\d\\d?| 2[0-4]\\d
中,第一个备选方案将匹配24,并且正则表达式引擎认为它完成了。您希望将最具体的备选方案放在更通用的回退模式之前。

[01]?\\d\\d?| 2[0-4]\\d
中,第一个备选方案将匹配24,并且正则表达式引擎认为已完成。您希望将最具体的替代方案放在更通用的回退模式之前。

看起来它与子网掩码的regex相关,如果有人共享regex以正确匹配Java中的子网掩码,您将非常感激它与子网掩码的regex相关,如果有人共享regex以正确匹配Java中的子网掩码,您将非常感激