String htmlString="<a href=\'http://192.168.10.2/gp?csdn=13478470937\'></a>
                  +"下载<a href=\"http://c2.cmvideo.cn:8000/entry\">"
                  +"test";
如以上字符串,我要获取含参数csdn的超链接,正则表达式应该怎么写,
href的值可能是用''也可能是"",
自己写了一个但取不到,大家帮忙看看。
(<a\\s*href=[^>]*[c]{1}\\-[s]{1}\\-[d]{1}\\-[n]{1}>)

解决方案 »

  1.   

    try... String htmlString="<a href='http://192.168.10.2/gp?csdn=13478470937'></a>"
      +"下载<a href=\"http://c2.cmvideo.cn:8000/entry\">"
      +"test";
    String pattern = "(?i)<a[^>]*?href=(['\"]?)([^'\"\\s>]*?csdn[^'\"\\s>]*)\\1[^>]*>";
    Matcher m = Pattern.compile(pattern).matcher(htmlString);
    while(m.find())
    {
    System.out.println( m.group(2));
    }
      

  2.   


    String regex = "\\<a\\s*href\\s*=\\s*[\'|\"](http://[^>]*csdn=[^>]*)"+
    "[\'|\"]\\s*[/\\>|\\>\\</a\\>]";不仅匹配<a href="">和<a href=''>
    还匹配<a href />和<a href></a>
    自己也测试通过...
    希望能满足LZ需求
      

  3.   

    [\'|\"] 这种是错误的写法,多匹配了一个字符“|”,而且在Java中,“'”是不需要转义的,同样的,“<”和“>”在Java中也是不需要转义的还有楼主的正则,姑且不管它差的十万八千里,单看正则本身,[c]{1}这种纯粹的画蛇添足,就等价于c
      

  4.   

    你说的很有道理,我觉得你考虑的太少......
    [c]{1}和c不是一样的概念.
    "cc"不满足[c]{1}但是满足c  这就是很好的解释
    至于你说的一些多余的东西确实是有些地方是有点多余,
    但是代码不是只自己看的,一些稍显复杂的地方,加点多余的东西你的组员能够更能容易明白.
    (当然我不觉得我的写的让人容易明白,确实也有一些多余的地方,完全是一个习惯)
      

  5.   


    汗,cc满足c?这什么逻辑,你给个测试代码先