如何把<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);
}
}分不多了 全给了 希望能解决 谢谢大家回答。
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);
}
}分不多了 全给了 希望能解决 谢谢大家回答。
startStr和endStr该如何写呢?
取group(1)
Matcher m = p.matcher(str);
m.group(1);
str是你要匹配的目标字符串, Pattern.MULTILINE意思是使用多行匹配模式.
group(0)默认取的是所有的匹配内容. 正则会把所有匹配得到的内容作为标号0的分组,
其他使用()表达的则从1开始, 顺序标识为子组号.
group(1)表示正则式中第一个括号所匹配到的内容。
这个应该不行吧. 断言匹配是不消耗字符串的, 你需要把你的断言匹配中匹配的那些字符串给消耗掉啊.主要的问题在(?=>)这里, 两边是[^>]+和[^<]+, 那么<a>的后面一个>会被匹配到[^<]+中, 使子组取值繁琐了...
String str = "<div class=\"dccss\"><a href=\"2113861.html\" alt=\"引子 穿越的唐家三少\">引子 穿越的唐家三少</a></div>";
String res = str.replaceAll(".*?<a.*?>(.*?)</a>.*", "$1");
System.out.println(res);
}输出结果:
引子 穿越的唐家三少这样么?
其实这个和group差不多……
我需要匹配所有啊 必须得用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">