本帖最后由 digisdio 于 2011-08-22 15:12:04 编辑

解决方案 »

  1.   

    红字粗体部分剪短改成这样也是同样的结果:
    ([a-zA-Z]\w*=\w+;)*(?i:DatabaseName)=([a-zA-Z]\w*);*(?:([a-zA-Z]\w*=\w+);*)*$
      

  2.   

    我就想提取host、port和dbname和其他的属性
      

  3.   

    前面那一大堆不用细看,是匹配是否ipv4或者ipv6或者主机名的,都删掉都行,而且那是久经考验的,就是port之后取db属性这部分达不到效果。
      

  4.   

    不知道这个可以不
         String url = "jdbc:sqlserver://haha.com:1433;DataBaSeNAME=xyz;a=b;b=3;c=2;";
         Pattern p = Pattern.compile("[\\w\\d\\:.=]+;");
         Matcher m = p.matcher(url);
         while(m.find()) {
            System.err.println(m.group());
         }     String[] s = url.split(";");
         System.err.println(java.util.Arrays.toString(s));