-1

我必须匹配 HTML 中的大量记录。我希望每条记录都与正则表达式匹配(使用 .NET Regex Match)。

每条记录的格式如下(总 HTML 包含普通 HTML 和大约 100 条记录,如下所示):


<tr onclick="window.location.href='Vareauktion.asp?VISSER=Ja&funk=detaljedata&ID=14457'" style="cursor:hand" onmouseover="bgColor='#808080'" onmouseout="bgColor='#4b4b4b'" bgcolor="#4b4b4b"> 
                            <td valign="top"> 
                            <div id='OrdreID14457'></div> 
                <script>RunTimer('OrdreID14457', '04-10-2010 14:30:22');</script> 
                            <em><font size="-1">04-10-2010 14:30:22</font></em></td> 
                            <td valign="top"> Voldby (28|0)</td> 
                            <td valign="top">02:16:00</td> 
                            <td valign="top">09-10-2010<br>15:30:22</td> 
                            <td valign="top">Modeltog <img src="images/Gods_Modeltog.gif" alt="Modeltog" height="15" border="0"></td> 
                            <td valign="top">6603 T.</td> 
                            <td valign="top"> 
                            <img src='images/moneter.gif' height='13' alt='Moneter'>5.751.213 

                            </td> 
                            <td valign="top"> 

                            </td> 
                            <td valign="top"> 

                            </td> 
                        </tr>

到目前为止,我已经尝试了以下方法:

正则表达式:

id='OrdreID.*[^(<td colspan="9" height="1" bgcolor="#000000">)]*<td colspan="9" height="1" bgcolor="#000000">

我想做的是以下几点:

  • 开始我的比赛:id='OrdreID
  • 之后接受一切,直到它看到: <td colspan="9" osv..
  • 然后最后,我匹配了决赛:

使用我当前的解决方案,我遇到的问题是排除模式只匹配字符,而不是字符串。

我一直在阅读有关“前瞻”的信息,但我不知道如何在这种情况下使用它。

非常感谢!!最好的问候,拉斯

4

2 回答 2

2

我看到你在需要螺丝刀的地方试过一把锯子。

您是否尝试过使用 HTML 解析器?

于 2010-10-04T16:30:15.140 回答
0

使用HtmlAgilityPack或类似的解析器。如果您必须使用正则表达式,并且您不太关心健壮性或可维护性,您可以尝试以下方法:

string pattern = "(?<=id='OrdreID).+(?=<td colspan=\"9\" osv)";
于 2010-10-04T16:39:08.740 回答