-1

我有以下 html 页面。我只想在 C# 中的第一个表标记内提取数据。html页面代码是:

<table cellpadding=2 cellspacing=0 border=0 width=100%>
<tbody>
<tr>
<td align=right><b>11/09/2013&nbsp;at&nbsp;09:48</b></td>
</tr>
</tbody>
</table>
<center>
<table border="1" bordercolor="silver" cellpadding="2" cellspacing="0" width="100%">
<thead>
<tr>
<th width=100>ETA</th>
<th width=100>Ship Name</th>
<th width=80>From port</th>
<th width=80>To berth</th>
<th width=130>Agent</th>


</tr>
</thead>
<tbody>
<tr><td>11/09/2013 at 09:00&nbsp;</td>
<td>SONANGOL KALANDULA&nbsp;</td>
<td>Cabinda&nbsp;</td>
<td>Valero 6&nbsp;</td>
<td>Graypen&nbsp;</td>
</tr>
</tbody>
</table>

更具体地说,我只想提取具有日期11/09/2013 at 09:48的行,下面提到的代码位于我正在使用正则表达式的第一个标签下

"<table[^>]*>([^<]*(?:(?!</table)<[^<]*)*)[</table>]*" 

但是有了这个,我得到了整个页面源,即我在所有表格标签之间获取数据,但我只想要第一个表格标签之间的文本。

谁能告诉我正则表达式,我只能从整个 html 页面中提取这个特定部分?

4

1 回答 1

0

在这里试用您的版本时,它似乎对您指定的输入有效,但[</table>]*实际上应该只是</table>[</table>]*表示集合中的任意数量的字符:<,/,t,a,b,l,e,>)

不过,这似乎可以简化。这也应该有效:

<table[^>]*>.*?</table>

当然,如果您有嵌套表,则所有赌注都将关闭。

于 2013-09-25T16:35:02.727 回答