我想用正则表达式,去掉特定id的标记比如<table>
<tr>
<td id="td1"></td>
<td id="td2"></td>
</tr></table>我想把id为td2的td   replace成空如何做,谢谢!!

解决方案 »

  1.   

    string result = Regex.Replace(str, @"<td.*?id=""td2""[^>]*>[\s\S]*?</td>", "", RegexOptions.IgnoreCase);
      

  2.   

     string str = "比如 <table> <tr> <td   id=\"td1\"> </td> <td   id=\"td2\"> </td> </tr> </table>";
                string result = Regex.Replace(str, "<td\\s*id=\"td2\"[^>]*>[\\s\\S]*?</td>", "", RegexOptions.IgnoreCase);
      

  3.   

    楼上这位大哥如果<td   id="td2"> </td> 
    里面还有table  好像就不行么?
    <td   id="td2"> <table><tr><td></td></tr></table>
     </td> 
      

  4.   

    是可以的,只要你的<td>和</td>成对都是可以的,你上面那种情况是没有成对出现(是不是你疏忽了),所以可能没有达到你预想的效果
      

  5.   

    你可以测试这个
    <td id="td2"><table><tr><td></td></tr></table></td>  你发现 输出的是 </tr></table></td> 因为匹配了前面一个 </td> ,
    所以这段replace的是<td id="td2"><table><tr><td>,
    这就不对了
      

  6.   

    你可以测试这个 
    <td   id="td2"> <table> <tr> <td> </td> </tr> </table> </td>     你发现   输出的是   </tr> </table> </td>   因为匹配了前面一个   </td>   , 
    所以这段replace的是 <td   id="td2"> <table> <tr> <td></td> , 
    这就不对了
      

  7.   

    wuhq030710914 能不能指点一下?
      

  8.   

    这种需求用平衡组来做string result = Regex.Replace(str, @"<td.*?id=""td2""[^>]*>((?><td[^>]*>(?<o>)|</td>(?<-o>)|[\s\S])*)(?(o)(?!))</td>", "", RegexOptions.IgnoreCase);
      

  9.   

    这种需求用平衡组来做string result = Regex.Replace(str, @"<td.*?id=""td2""[^>]*>((?><td[^>]*>(?<o>)|</td>(?<-o>)|[\s\S])*)(?(o)(?!))</td>", "", RegexOptions.IgnoreCase);
      

  10.   

    root_   真是高手~~~
    佩服~~