在一个table里有可能又嵌套了table,要求取出最外层的所有行的数组。
如第一个就应该是
<tr>
<td style="width: 174px">
a</td>
<td>
n</td>
<td>
l</td>
</tr>示例Table:<table border="1" style="width: 557px">
<tr>
<td style="width: 174px">
a</td>
<td>
n</td>
<td>
l</td>
</tr>
<tr>
<td style="width: 174px">
<table border="1" style="width: 139px">
<tr>
<td style="height: 21px">
</td>
<td style="height: 21px">
</td>
<td style="height: 21px">
</td>
</tr>
<tr>
<td>
</td>
<td>
d</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
<td>
</td>
<td>
<table border="1" style="width: 156px">
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
dd</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="width: 174px">
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
如第一个就应该是
<tr>
<td style="width: 174px">
a</td>
<td>
n</td>
<td>
l</td>
</tr>示例Table:<table border="1" style="width: 557px">
<tr>
<td style="width: 174px">
a</td>
<td>
n</td>
<td>
l</td>
</tr>
<tr>
<td style="width: 174px">
<table border="1" style="width: 139px">
<tr>
<td style="height: 21px">
</td>
<td style="height: 21px">
</td>
<td style="height: 21px">
</td>
</tr>
<tr>
<td>
</td>
<td>
d</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
<td>
</td>
<td>
<table border="1" style="width: 156px">
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
dd</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="width: 174px">
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
基本思路就是这样把
不过如果正则可以解决那是再好不过了。
<tr[^>]*>(?:(?:\s|\S)*?(?=<table|</tr>)(?(<table)<table[^>]*>(?:\s|\S)*?(?:</table>|(?:(?:<table[^>]*>(?:\s|\S)*?</table>(?:\s|\S)*?)*?</table>))(?:\s|\S)*?|))*</tr>一条表达式就可以获取你想要的
写得好辛苦
测试:<table width="300" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr> </table>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
</table></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr>
<td> </td>
</tr>
</table></td>
</tr>
<tr>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr> </table></td>
<td> </td>
<td> </td>
</tr>
</table>-------------------获取3个match
============================================match1
<tr>
<td> </td>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr> </table>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
</table></td>
<td> </td>
</tr>
==============================================match2
<tr>
<td> </td>
<td> </td>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr>
<td> </td>
</tr>
</table></td>
</tr>
==============================================match3
<tr>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr> </table></td>
<td> </td>
<td> </td>
</tr>测试通过
不好意思,CSDN首页不知道有什么特殊的字,被我们公司防火墙屏蔽掉了,今天才知道可以直接敲论坛地址。再次谢谢