莫非XKP(低等下人)是高手?学习!
解决方案 »
- 关于sqlserver中时间类型的问题!
- jsp引入jquery
- SQL 如何将int 型的串 ,转换成字符型
- ssh问题
- birt 如何动态设置报表文件绑定的数据库地址
- 初学webservices 返回字符串能够实现,返回list集合报错 can't mapping java.until.list
- 为什么过滤器不能被调用?不知是哪骤错了,我是在struts中用的
- java 调用 .net webservice 接口问题解决 ... 希望能帮助有需要的朋友 ...
- JmsProducerOptions中的timeToLive字段到底该填写什么值!?
- 大家帮帮忙,j2ee和java ,jsp ,xml这些东西之间有什么关连,还有他的开发平台是什么,和java一样吗
- 应怎样填写这个oracle的jdbc串?
- 我的问题还比较多,如何检查鼠标单击右键这个事件?还有,如何在list中单击一个条目产生动作
http://www.myesoft.com/downloads/java/regex.zip
import java.io.*;public class TakeOutULTags {
public TakeOutULTags() {
} public static void main(String[] args) throws Throwable {
int chr;
StringBuffer content = new StringBuffer(); File file = new File("ULTest.htm");
BufferedReader in = new BufferedReader(new FileReader(file));
while((chr = in.read()) != -1) {
content.append((char)chr);
} System.out.println(content); System.out.println("------------------- ul lists ------------------");
//Pattern p = Pattern.compile("<font([^>]*)><i>(.*)</i></font>", Pattern.MULTILINE);
Pattern p = Pattern.compile("<ul([^>]*)>(.*?)</ul>", Pattern.MULTILINE | Pattern.DOTALL);
Pattern p1 = Pattern.compile("<a href=\"([^\"]*)\".*<font class=[^>]*>(.*)</font></a>.*<font color=[^>]*><i>(.*)</i></font>", Pattern.MULTILINE | Pattern.DOTALL);
Matcher m = p.matcher(content); while(m.find()) {
String ul = m.group();
System.out.println(ul); Matcher m1 = p1.matcher(ul);
while(m1.find()) {
System.out.println("url = " + m1.group(1));
System.out.println("title = " + m1.group(2));
System.out.println("time = " + m1.group(3));
}
}
}}
测试用的html
<!--ULTest.htm-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD><BODY>
<ul class=l15>
<a href="http://edu.sina.com.cn/l/2002-06-10/25896.html" target=_blank>
<font class=f15>报考中国一流大学</font></a>
<font color=#333333><i>2002/06/10 15:24</i></font>
</ul>
<ul class=l15>
<a href="http://ww.163.com" target=_blank>
<font class=f15>网易</font></a>
<font color=#333333><i>2002/08/10 11:52</i></font>
</ul>
</BODY>
</HTML>
谢谢您的热心帮忙,我试过了,基本实现我的意图。但还有一点小问题。
如果随便找个网页,
http://sinanews.chinasearch.com.cn/sinanews.exe?word=南京农业大学&mt=1&fl=
会有这种结果: title = <b>南京农业大学</b>概况 。
也就是标题的大小写还没有解决!因为<ul>...</ul>里还有这种情况:
<ul class=l15>
<a href="http://edu.sina.com.cn/i/25741.shtml" target=_blank>
<font class=f15><b>南京农业大学</b>概况</font>
</a><font color=#333333><i>2001/04/28 11:09</i></font>
</ul>
有的标题有两种字体显示!
不过还是要谢谢您!顺便能给小弟讲解一下表达式的含义!解决问题,马上结贴!
其实我也不是很熟悉,这东东做了一个下午,说不清楚把
System.out.println("title = " + m1.group(2));
改成
System.out.println("title = " + m1.group(2).replaceAll("<.*?>", ""));<ul([^>]*)>(.*?)</ul>就是匹配整个<ul>...</ul>的,其实可以写成<ul.*>.*?</ul>
其中一些东西是我试验时验证的pattern
Pattern.MULTILINE 允许多行匹配,Pattern.DOTALL允许.代表换行<a href=\"([^\"]*)\".*<font class=[^>]*>(.*)</font></a>.*<font color=[^>]*><i>(.*)</i></font>
[^\"]是用来查找url的,我把第二个"作为url的结尾,第一和第二个"之间用圆括号括起来的非"字符就都是url了
<font class=nnn>和</font>之间的当然是title
<font color=nnn><i>和</i></font>之间当作time最后这个<.*?>可以匹配html的标签,我用它把title中的所有html标签都用""替换掉了