html的写法不严格,现有:
      String htmlStr = null;
      htmlStr = "<a asdf href=\"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
      htmlStr = "<a asdf href =  \"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
      htmlStr = "<a asdf href='www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
      htmlStr = "<a asdf href = 'www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
      htmlStr = "<a asdf href=www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";
      htmlStr = "<a asdf href = www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";如何写出一个针对上面几种href学法的正则表达式获取href的值?谢谢!

解决方案 »

  1.   

    等到:www.abc.com.cn/a/b.jsp?name=value
      

  2.   

    http://www.regexlib.com/DisplayPatterns.aspx?cattabindex=1&categoryId=2
      

  3.   

    http://www.regexlib.com/Search.aspx
    这里输入href进行搜索,
      

  4.   

    htmlStr = "<a asdf href=\"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
          htmlStr = "<a asdf href =  \"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
          htmlStr = "<a asdf href='www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
          htmlStr = "<a asdf href = 'www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
    可以用:
    regExp2 = "(<a\\s+([^>h]|h(?!ref\b))*href[\\s+]?=[\\s+]?('|\"))([^(\\s+|'|\")]*)([^>]*>)";
    得到:www.abc.com.cn/a/b.jsp?name=value那么:htmlStr = "<a asdf href=www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";与
    htmlStr = "<a asdf href = www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";如何用正则表达式得到:www.abc.com.cn/a/b.jsp?name=value
      

  5.   

    public void test() {
    //www.abc.com.cn/a/b.jsp?name=value
    String htmlStr = null;
     htmlStr = "<a asdf href=\"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
    //       htmlStr = "<a asdf href = \"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
    //       htmlStr = "<a asdf href='www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
    //       htmlStr = "<a asdf href = 'www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
    //       htmlStr = "<a asdf href=www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";
    //       htmlStr = "<a asdf href = www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";
          
          String rex = "=.*=[\\w|\'|\"]*";
          Pattern p = Pattern.compile(rex);
          Matcher m = p.matcher(htmlStr);
          if (m.find())
           System.out.println(m.group());
    }有两点还没解决,
    1、每一个多一个等号
    2、等号后面如果是空格没法去掉,我加\\s好像不起作用.
      

  6.   

    htmlStr.substring(m.start()+1, m.end())
    这样可以去掉等号,不知道是否可以满足要求
      

  7.   

    我要对:      String htmlStr = null;
          htmlStr = "<a asdf href=\"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
          htmlStr = "<a asdf href =  \"www.abc.com.cn/a/b.jsp?name=value\" asfd >连接</a>";
          htmlStr = "<a asdf href='www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
          htmlStr = "<a asdf href = 'www.abc.com.cn/a/b.jsp?name=value' asfd >连接</a>";
          htmlStr = "<a asdf href=www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";
          htmlStr = "<a asdf href = www.abc.com.cn/a/b.jsp?name=value asfd >连接</a>";这几种情况(可能还有,因为html格式不严格),中的href对应的URL取出作替换,所以想通过
    正则表达式作替换。楼上的写法,我测试一下,解决了给分,不够重新开帖。谢先了!
      

  8.   

    这么写基本可以解决:regExp = "(<a[\\s+]*([^>h]|h(?!ref\b))*href[\\s+]*=[\\s+]*[('|\")]?)([^(\\s+|'|\")]*)([^>]*>)";谢谢上面几位,马上给分!