我有一个正则表达式如下:
/<table[^>]*>[\s\S]*?<\/table>/gi有如下数据进行匹配:
<table border="1" cellspacing="1" cellpadding="1" width="200">
<tbody>
<tr>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
&nbsp;
<table border="1" cellspacing="1" cellpadding="1" width="200">
<tbody>
<tr>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
</tbody>
</table>

</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
</tbody>
</table>
<br />但输出来的结果令人不满意啊,我的原意是想让这个表达式找出你表格与子表格,可是他的结果变成了这样了
<table border="1" cellspacing="1" cellpadding="1" width="200"><tbody><tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;<table border="1" cellspacing="1" cellpadding="1" width="200"><tbody><tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr></tbody></table>希望能帮我解决我要找到你表格,也要子表格,这个嵌套的表格,可能有若干个,我要怎么做?????????

解决方案 »

  1.   

    这个没有办法,js不支持平衡组,所以标签嵌套的问题无法解决
    如果你外部只有一个table,可以使用
    /<table[^>]*>([\s\S]*)<\/table>/gi 贪婪模式匹配外面的table
    然后再
    到上面匹配的内容里匹配里面的table,
    关于平衡组
      

  2.   

    外面的Table根本就取不完整啊,我开始的想法和你一样的,递归了,没想到结果有问题,原来是匹配的时候就有问题!
      

  3.   

    从里向外/<table[^>]*>(?![\s\S]*<table[^>]*>)[\s\S]*?<\/table>/