如何把<a></a>之间的字符提取出来 ?2113861.html忽略 (2113861随时变的 下面alt里内容也一样)alt=\"引子 穿越的唐家三少\" 中的"引子 穿越的唐家三少" 也忽略
public static void main(String[] args) {
String startStr="<div class=\"dccss\"><a href=\"2113861.html\" alt=\"引子 穿越的唐家三少\">";
String endStr="</a></div>";
String regEx =startStr+"([^\"']*)"+endStr;
Pattern p = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("<div class=\"dccss\"><a href=\"2113861.html\" alt=\"引子 穿越的唐家三少\">引子 穿越的唐家三少</a></div>");
while(m.find()){
String go=m.group(0);
System.out.println(go);

}
}分不多了 全给了  希望能解决 谢谢大家回答。

解决方案 »

  1.   

    我上面的提取不出来
    startStr和endStr该如何写呢?
      

  2.   

    "<a[^>]*>([^<]*)</a>"
    取group(1)
      

  3.   

    Pattern p = Pattern.compile("<a>(.*)</a>", Pattern.MULTILINE);
    Matcher m = p.matcher(str);
    m.group(1);
    str是你要匹配的目标字符串, Pattern.MULTILINE意思是使用多行匹配模式.
      

  4.   

    请问group(1)和group(0)有何区别呢?
      

  5.   

    请问group(1)和group(0)有何区别呢?
      

  6.   


    group(0)默认取的是所有的匹配内容.  正则会把所有匹配得到的内容作为标号0的分组, 
    其他使用()表达的则从1开始, 顺序标识为子组号.
      

  7.   

    先把后面的字符串换成空字符 replace("[^"]+","");然后在匹配(?=<a)[^>]+>[^<]+(</a>)
      

  8.   

    当然有区别,group(0)表示整个正则式所匹配到的内容。
    group(1)表示正则式中第一个括号所匹配到的内容。
      

  9.   

    (?= <a)[^>]+(?=>)[^ <]+(?=</a>)
      

  10.   


    这个应该不行吧.  断言匹配是不消耗字符串的, 你需要把你的断言匹配中匹配的那些字符串给消耗掉啊.主要的问题在(?=>)这里, 两边是[^>]+和[^<]+, 那么<a>的后面一个>会被匹配到[^<]+中, 使子组取值繁琐了...
      

  11.   

    public static void main(String args[]) {
    String str = "<div class=\"dccss\"><a href=\"2113861.html\" alt=\"引子 穿越的唐家三少\">引子 穿越的唐家三少</a></div>";
    String res = str.replaceAll(".*?<a.*?>(.*?)</a>.*", "$1");
    System.out.println(res);
    }输出结果:
    引子 穿越的唐家三少这样么?
    其实这个和group差不多……
      

  12.   

    我刚才使用group(1)匹配出了最后一个符合的(总共有300+个)
    我需要匹配所有啊  必须得用group(0)
    但是用了group(0)匹配出的是这样的
    <div class="dccss"><a href="2113861.html" alt="引子 穿越的唐家三少">引子 穿越的唐家三少</td>    <td class="ccss">
    <div class="dccss"><a href="2113862.html" alt="第一章 斗罗大陆,异界唐三(一)">第一章 斗罗大陆,异界唐三(一)</td> <td class="ccss">