java正则解析ip

Posted javahepeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java正则解析ip相关的知识,希望对你有一定的参考价值。

public class test {

public static void main(String[] args) {
// TODO Auto-generated method stub
String ipsearch="11.168.1.101-103/126/129/200-204";
ipAnalys(ipsearch);

}

private static List<String> ipAnalys(String ipsearch) {
String[] ips=ipsearch.split("/");
String pattern = "((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)";

List<String> realIps=new ArrayList<String>();
String ipFrist="";
for (int i = 0; i < ips.length; i++) {
StringBuffer realip=new StringBuffer();
String ip=ips[i];
if(Pattern.matches(pattern, ip)){
realIps.add(ips[i]);
ipFrist=ips[i].substring(0,ip.lastIndexOf("."));
}else{
if(ips[i].indexOf("-")<0){
realip.append(ipFrist).append(".").append(ips[i]);
realIps.add(realip.toString());
}else{
String[] iprange=ips[i].split("-");
int start,end;
if(StringUtils.isEmpty(ipFrist)){
//说明直接是ip范围
ipFrist=ips[i].substring(0,ip.lastIndexOf("."));
start=Integer.parseInt(iprange[0].substring(ipFrist.length()+1));
end =Integer.parseInt(iprange[1]);
}else{
start=Integer.parseInt(iprange[0]);
end =Integer.parseInt(iprange[1]);

}
for (int j = start; j <= end; j++) {
realip.setLength(0);
realip.append(ipFrist).append(".").append(j);
realIps.add(realip.toString());
}
}
}
}
return realIps;
}

}

以上是关于java正则解析ip的主要内容,如果未能解决你的问题,请参考以下文章

java解析xml ②之正则表达式配合解析

java笔试之参数解析(正则匹配)

使用正则表达式解析表 - Java

使用 Java 正则表达式模式解析字符串?

java 正则表达式解析数据

java 正则表达式解析数据