正则表达式 - 匹配HTML记录

时间:2010-10-04 16:27:36

标签: regex html-parsing lookahead

我必须匹配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..
  • 然后最后,我匹配决赛:

根据我目前的解决方案,我遇到的问题是排除模式只匹配字符,而不是字符串..

我一直在阅读“前瞻”,但我不知道如何在这种情况下使用它..

非常感谢!! 最好的祝福, 拉斯

2 个答案:

答案 0 :(得分:2)

我看到你已经尝试过需要螺丝刀的锯子。

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

答案 1 :(得分:0)

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

string pattern = "(?<=id='OrdreID).+(?=<td colspan=\"9\" osv)";