【发布时间】:2012-02-01 01:33:42
【问题描述】:
我需要检索 table tag 之间的所有数据。但最近由于现场的一些更新,他们忘记在其中一张表中包含结束标签。 原始源代码在这里:
<table><tr><td><b>Semester:</b></td><td><b>5</b></td><td></td><td> <b> Result: 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> <b> Result: 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 </td></tr></table>
我使用下面的正则表达式进行匹配,它工作正常,但您可以注意到最近的更新忘记在第二个表格元素中包含表格的结束标记,它正在破坏代码。
"|<table>.*<\/table>|U"
请帮助我形成一个表达式来匹配表之间的数据。 任何帮助将不胜感激。 谢谢。
【问题讨论】:
-
当正则表达式和 HTML 解析功能出现问题时,StackOverflow 应该真正自动链接到此:stackoverflow.com/a/1732454/78845
-
建议不要使用正则表达式解析 HTML。您使用的是什么服务器端语言? PHP?
-
您正在使用哪种语言/库?为它找到合适的 HTML 解析器。
-
@Johnsyweb 请注意,一方面只有 HTML 的某些部分是不规则的,另一方面有一些正则表达式库支持递归模式匹配。
-
@Gumbo:注意到了,但我仍然会选择经过验证的解析器,以实现健壮性、可读性和可维护性!
标签: regex html-parsing