如题,比如
<a class = "ffff"  href = "...." 还有些脚本>显示</a>
我如下写的,
<a [^<]*href[ ]?=[ ]?"http://[a-zA-Z0-9/_.]*"[^<]*>[^<]*[公司厂]+</a>
可是,很奇怪的是匹配的时候。每次得到8个结果。如果从最后一个那里继续找,能找到后面的8个匹配字串,依次至结束。为什么会这样呢?谁能帮忙看看。谢谢了先。

解决方案 »

  1.   

    比如,要匹配
    http://list.china.alibaba.com/company/list/1351.html
    这个页面源码里面所有的超连接做例子。
    我那个需要如何修改呢。
      

  2.   

    try {
    Regex RegexObj = new Regex("<a [^<]*href[ ]?=[ ]?\"http://[a-zA-Z0-9/_.]*\"[^<]*>[^<]*[公司厂]+</a>");
    Match MatchResults = RegexObj.Match(SubjectString);
    while (MatchResults.Success) {

    MatchResults = MatchResults.NextMatch();

    } catch (ArgumentException ex) {
    // Syntax error in the regular expression
    }
      

  3.   

    我做的是四十条啊,兄弟,根本原因我估计是你没有取到页面的所有内容,只取到了前半部分内容,所以只能识别前八条。我现在在家里,家里的机子上没有装.net,所以给出一段java实现,你可以试试,和C#其实很类似。 页面的源码保存到一个文本文件中,然后从这个文件中读取出来,进行匹配的,代码如下:import java.util.regex.*;
    import java.io.*;/**
     * @author linuxyf
     *
     */
    public class TestMatch { public static void main(String[] args) {
    StringBuffer content = null;
    String str = "";
    try {
    // 读源文件内容
    content = new StringBuffer();
    String newline = System.getProperty("line.separator"); 
    FileReader fr = new FileReader("D:\\test.txt");
    BufferedReader br = new BufferedReader(fr);
    while((str = br.readLine()) != null) {
    content.append(str + newline);
    }
    br.close();
    fr.close();

    // 把读到的内容写到一个文件中,和源文件比较,看是不是读取是正确的
    FileWriter fw = new FileWriter("D:\\tt.txt");
    fw.write(content.toString());
    fw.close();

    // 匹配
    Pattern Regex = Pattern.compile("<a [^<]*href[ ]?=[ ]?\"http://[a-zA-Z0-9/_.]*\"[^<]*>[^<]*[公司厂]+</a>",
    Pattern.CANON_EQ);
    Matcher RegexMatcher = Regex.matcher(content.toString());

    while (RegexMatcher.find()) {
    System.out.println(RegexMatcher.group());


    }
    catch(Exception e) {
    System.out.println(e.getMessage());
    }
    }
    }
      

  4.   

    You can try another solution
    http://community.csdn.net/Expert/TopicView.asp?id=4216910