莫非XKP(低等下人)是高手?学习!

解决方案 »

  1.   

    给你一个例子,请参考:
    http://www.myesoft.com/downloads/java/regex.zip
      

  2.   

    建议使用专门解析HTML的API。比如Tags。http://www.thebishops.org/hho/index.html
      

  3.   

    看看:http://www.csdn.net/develop/article/17/17739.shtm
      

  4.   

    写了一个东东,楼主试试//TakeOutULTags.javaimport java.util.regex.*;
    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>
      

  5.   

    To  ashes(灰尘) :
      谢谢您的热心帮忙,我试过了,基本实现我的意图。但还有一点小问题。
      如果随便找个网页,
     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>
    有的标题有两种字体显示!
    不过还是要谢谢您!顺便能给小弟讲解一下表达式的含义!解决问题,马上结贴!
      

  6.   

    不用客气,本来就是想骗分的
    其实我也不是很熟悉,这东东做了一个下午,说不清楚把
    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标签都用""替换掉了