本帖最后由 cuthkid 于 2010-09-04 01:37:30 编辑

解决方案 »

  1.   

    你没说你要什么。你贴的正则无法捕获你给的任何一个例子。
    我猜一下。    private static void TestRegex06()
        {
            string html = @"<TD>09-02 17:00</TD>//Time
        <TD>
          <STRONG style=""COLOR: #006600"">20.5</STRONG> </TD>//Work1Score
        <TD>工作1/工作2 </TD>//Work
        <TD>
          <STRONG style=""COLOR: #006600"">30.5</STRONG> </TD>//Work2Score
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD>-</TD>
        <TD> </TD>
    ";
            string html1 = @"<TD colSpan=""2""> </TD>
        <TD>09-01 17:20</TD>//Time
        <TD>20.5 </TD>//Work1Score
        <TD>工作1/工作2</TD>//Work
        <TD>30.5 </TD>//Work2Score
        <TD>
          <STRONG style=""COLOR: #ff0000"">2.6</STRONG> </TD>
        <TD>
          <STRONG style=""COLOR: #006600"">2.95</STRONG> </TD>
        <TD>
          <STRONG style=""COLOR: #006600"">2.5</STRONG> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD>1.9 </TD>
        <TD>-</TD>
        <TD>1.8 </TD>
        <TD colSpan=""3"">
          <A href=""javascript:void(0);oc_menu('hiddendata_54')"">
            <IMG alt="""" src=""images/aopan_hz_014.gif"" width=""95"" height=""21"" />
          </A>
        </TD>";
            string html2 = @"<TD>09-01 17:20</TD>//Time
        <TD>20.5 </TD>//Work1Score
        <TD>工作1/工作2 </TD>//Work
        <TD>30.5 </TD>//Work2Score
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD>-</TD>
        <TD> </TD>";        string html3 = @"<TD rowSpan=""3"" colSpan=""2""> </TD>
        <TD>09-02 09:50</TD>//Time
        <TD>
          <STRONG style=""COLOR: #ff0000"">20.5</STRONG> </TD>//Work1Score
        <TD>工作1/工作2 </TD>//Work
        <TD>
          <STRONG style=""COLOR: #006600"">30.5</STRONG> </TD>//Work2Score
        <TD>
          <STRONG style=""COLOR: #006600"">1</STRONG> </TD>
        <TD>
          <STRONG style=""COLOR: #ff0000"">2</STRONG> </TD>
        <TD>
          <STRONG style=""COLOR: #006600"">3</STRONG> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD> </TD>
        <TD>1.85 </TD>
        <TD>-</TD>
        <TD>1.85 </TD>
        <TD rowSpan=""3"" colSpan=""3"">
          <A href=""javascript:void(0);oc_menu('hiddendata_47')"">
            <IMG alt="""" src=""images/aopan_hz_014.gif"" width=""95"" height=""21"" />
          </A>
        </TD>";
            string[] htmls = new string[] { html, html1, html2, html3 };
            Regex regexs = new Regex(@"(?isn)<TD>\s*(?<Time>\d{2}-\d{2} \d{2}:\d{2})</TD>[^<]*<TD>(\s*<(?!/?td)[^<>]+>)*(?<Work1Score>[^<]+)((?!</TD).)+</TD>[^<]*<TD>\s*(?<Work>[^<]*)</TD>[^<]*<TD>(\s*<(?!/?td)[^<>]+>)*(?<Work2Score2>[^<]+)");
            foreach (string test in htmls)
            {
                MatchCollection sections = regexs.Matches(test);            foreach (Match m in sections)
                {
                    Console.WriteLine(m.Groups["Time"].Value);
                    Console.WriteLine(m.Groups["Work1Score"].Value);
                    Console.WriteLine(m.Groups["Work"].Value);
                    Console.WriteLine(m.Groups["Work2Score2"].Value);
                }            Console.WriteLine("--------------------------------------");
            }