<li class="ji" _bg=Y> | |
<span class="one lan1 cutT" _chk=694> | |
<script>wm(0)</script> | |
<a _tc='0' href="/b-1001024083/694.htm" _link='1'>车世界中的6位女神</a><script>wm(7)</script></span> | |
<span class="two lan2 cut"><a _ulink='312898810'>誑嬡柏‘鋇鋇</a></span> | |
<span class="three gary1" _mng=N> | |
8/<font color="#FF0000">2770</font></span> | |
<span class="four lan2 cut" _mng=N> | |
<a _ulink=1023781448>吉日总部客服</a></span> | |
<span class="five gary1" _mng=N><script>wt(1237172399)</script></span><span class="one lan2 mngBtn" _mng=Y _id="694" _elite="0" _top="0" _lock="0" style="display:none"></span> | |
</li> |
对于这样一段html代码,我想抽取其中的帖子标题“车世界中的6位女神”,帖子的作者“誑嬡柏‘鋇鋇”,帖子的点击和回复数“8/2770”,帖子的最后回复人“吉日总部客服”
java的正则应该怎么写呢?
我原来的例子是这样的
package com.common.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@SuppressWarnings("unchecked")
public class servicingTest0 {
public static void main(String args[]) {
String html = "<title>买X3前最后一次考察 没想到就直接下订金了</title>" + "<title>BMW 2009精英驾驶培训课程现已出炉,3月全面启动招募报名!</title>"
+ "<title>宝马7系历史回顾</title>";
List resultList = getContext("<title>", "</title>", html);
for (Iterator iterator = resultList.iterator(); iterator.hasNext();) {
String context = (String) iterator.next();
System.out.println(context);
}
}
public static List getContext(String start, String end, String html) {
List resultList = new ArrayList();
/**
* Pattern p = Pattern.compile("<title>([^</title>]*)");
*/
Pattern p = Pattern.compile(start + "([^" + end + "]*)");// 匹配<title>开头,</title>结尾的文档
Matcher m = p.matcher(html);
while (m.find()) {
resultList.add(m.group(1));
}
return resultList;
}
}
但是现在实际的问题是不存在像title那样简单的标签,比如帖子的标题标签是<a _tc='0' href="/b-1001024083/694.htm" _link='1'>标题</a>,这个694是需要变化的,如果是用”火车采集器“那么我只要给定<a _tc='0' href="/b-1001024083/(*).htm" _link='1'>和</a>,就可以拿到帖子标题,现在java中用正则如何实现这一功能,大大们帮我指点一下?谢谢啦