在正则表达式中解析缺少结束标记的帮助

时间:2012-01-31 09:53:00

标签: regex html-parsing

我需要检索表标记之间的所有数据。但最近由于网站上的一些更新,他们忘了在其中一个表中包含结束标记。 原始源代码在这里:

<table><tr><td><b>Semester:</b></td><td><b>5</b></td><td></td><td>&nbsp;&nbsp;&nbsp;&nbsp;<b> Result:&nbsp;&nbsp;SECOND CLASS </b></td></tr></table><hr>

<table><tr><td width=250>Subject</td><td width=60 align=center>External </td><td width=60 align=center>Internal</td><td align=center width=60>Total</td><td align=center width=60>Result</td></tr><br><tr><td width=250><i>Software Engineering (06IS51)</i></td><td width=60 align=center>45</td><td width=60 align=center>19</td><td width=60 align=center>64</td><td  width=60 align=center><b>P</b></td></tr><tr><td width=250><i>Systems Software (06CS52)</i></td><td width=60 align=center>48</td><td width=60 align=center>20</td><td width=60 align=center>68</td><td width=60 align=center><b>P</b></td></tr><tr><td width=250><i>Operating Systems (06CS53)</i></td><td width=60 align=center>37</td><td width=60 align=center>21</td><td width=60 align=center>58</td><td width=60 align=center><b>P</b></td></tr><tr><td width=250><i>Database Management Systems (06CS54)</i></td><td width=60 align=center>38</td><td width=60 align=center>19</td><td width=60 align=center>57</td><td width=60 align=center><b>P</b></td></tr><tr><td width=250><i>Computer Networks - I (06CS55)</i></td><td width=60 align=center>58</td><td width=60 align=center>20</td><td width=60 align=center>78</td><td width=60 align=center><b>P</b></td></tr><tr><td width=250><i>Formal Languages & Automata Theory (06CS56)</i></td><td width=60 align=center>58</td><td width=60 align=center>21</td><td width=60 align=center>79</td><td width=60 align=center><b>P</b></td></tr><tr><td width=250><i>Database Applications Laboratory (06CSL57)</i></td><td width=60 align=center>49</td><td width=60 align=center>20</td><td width=60 align=center>69</td><td width=60 align=center><b>P</b></td></tr><tr><td width=250><i>Algorithms Laboratory (06CSL58)</i></td><td width=60 align=center>20</td><td width=60 align=center>18</td><td width=60 align=center>38</td><td width=60 align=center><b>P</b></td></tr><br><br><hr>

<table><tr><td><b>Semester:</b></td><td><b>3</b></td><td></td><td> &nbsp;&nbsp;&nbsp;&nbsp;<b> Result:&nbsp;&nbsp;SECOND CLASS </b></td></tr></table><hr>

<table><tr><td width=250>Subject</td><td width=60 align=center>External </td><td width=60 align=center>Internal</td><td align=center width=60>Total</td><td align=center width=60>Result</td></tr><br><tr><td width=250><i>Electronic Circuits (06CS32)</i></td><td width=60 align=center>35</td><td width=60 align=center>15</td><td width=60 align=center>50</td><td  width=60 align=center><b>P</b></td></tr></table><br><br>

<table><tr><td></td><td></td><td>Total Marks:</td><td> 50 &nbsp;&nbsp;&nbsp; </td></tr></table>                      

我使用下面的regualr表达式来匹配并且它工作正常但是你可以注意到最近的更新忘记了包括表的结束标记在第二个表元素中并且它正在破坏代码。

"|<table>.*<\/table>|U"

请帮助我形成一个表达式来匹配表之间的数据。 任何帮助将受到高度赞赏。 感谢。

1 个答案:

答案 0 :(得分:0)

您可以实际决定从第一个<table>标记开始到最后一个<tr>(包括)

,而不是在</tr>标记之间获取数据
/(<tr>.*<\/tr>)/