例如:
字符串如下:
12.24.45.100:80 HTTP 210,410,420 US ATT User 
12.214.227.97:2550 HTTP 270,821,821 US ATT User 
24.166.145.107:2442 HTTP 231,901,901 美国 Road 
61.26.29.48:8080 HTTP 80,761,781 Japan 想把 IP地址和端口号取出来12.24.45.100:80
12.214.227.97:2550
24.166.145.107:2442
61.26.29.48:8080求正则表达式或者可实现的方法

解决方案 »

  1.   

    ding ls 
    这样效率会好点
    \d{1,3}(?:\.\d{1,3}){3}:\d{1,4}
      

  2.   

    public class Test {
    public static void main(String[] args) {
    String s = "12.24.45.100:80 HTTP 210,410,420 US ATT User 12.214.227.97:2550 HTTP 270,821,821 US ATT User 24.166.145.107:2442 HTTP 231,901,901 美国 Road 61.26.29.48:8080 HTTP 80,761,781 Japan";
    String[] array = s.split("HTTP");
    for (int i = 0; i < array.length; i++) {
    if (array[i].indexOf(":") != -1) {
    int p = array[i].indexOf(":");
    int begin = getBegin(array[i], p);
    int end = getEnd(array[i], p);
    System.out.println(array[i].substring(begin, end));
    }
    }
    } private static int getBegin(String s, int p) {
    char c = 32;
    int b = p;
    do {
    if (b<=0) break;
    c = s.charAt(b--);
    } while (c != 32);
    if (b == 0) 
    return 0;
    else
    return ++b;
    } private static int getEnd(String s, int p) {
    char c = 32;
    int b = p;
    do {
    c = s.charAt(b++);
    } while (c != 32); return b--;
    }}
      

  3.   

    我用的split写的:public class sql {
        public static void main(String[] args) {
            String str = "12.24.45.100:80 HTTP 210,410,420 US ATT User 12.214.227.97:2550 HTTP 270,821,821 US ATT User 24.166.145.107:2442 HTTP 231,901,901 美国 Road 61.26.29.48:8080 HTTP 80,761,781 Japan ";
            String[] ip=str.split("HTTP\\s(\\d+,?)+\\D+");
            System.out.println(ip.length);
            
            for (int i=0;i<ip.length;i++)
            {
                System.out.println(ip[i]);
            }
        }
    }
      

  4.   

    //正则表达式:import java.util.regex.*;public class Chazhao { public static void main(String[] args) {
    String s="12.24.45.100:80 HTTP 210,410,420 US AT" +
    "T User12.214.227.97:2550" +
    "HTTP 270,821,821 US ATT User 24.166.145.107:2442" +
    "HTTP 231,901,901 美国 Road 61.26.29.48:8080" +
    "HTTP 80,761,781 Japan";
    Pattern p = Pattern.compile("(\\d+\\.){3}\\d+\\:\\d+");
    Matcher m = p.matcher(s);
    while(m.find()){
    System.out.print("HTTP://");
      System.out.println(m.group());
    } }}
      

  5.   

    12.24.45.100:80
    String reg = "\\d+\\.\\d+\\.\\d+\\.\\d+:\\d+"