如下内容: 该表格里面可能还嵌套了表格等各种元素
htmlstr=  "上略一千字<table 一些样式代码 id='xlstable' 另一些样式代码>......</table>下略500字"现在要用c#正则,将这段内容"<table 一些样式代码 id='xlstable' 另一些样式代码>......</table>"替换成我定义好的内容如 str2 ="<table><tr><td>广告</td></tr></table>",期待函数  public string replaceOldTableByNewTable( string htmlstr, string str2)
返回htmlstr被替换后的结果.还要再麻烦各位大侠,在线等。

解决方案 »

  1.   

    Regex re=new Regex("<table ([^<>]+) id='xlstable' ([^<>]+)>");
      

  2.   


    lZ是想去掉冗余数据和表格样式吗,如果是的话可以用这个
    string htmlstr=  "上略一千字 <table 一些样式代码 id='xlstable' 另一些样式代码>...... </table>下略500字";
    htmlstr.replace(@"([^<>]+)|((\s*[^=]+='[^']+'\s*)*)",'"")
      

  3.   

    try...//方法
    public string replaceOldTableByNewTable(string htmlstr, string str2)
    {
        Regex reg = new Regex(@"(?is)<table\b(?:(?!id=).)*id=(['""]?)xlstable\1[^>]*>((?><table[^>]*>(?<o>)|</table>(?<-o>)|(?:(?!</?table\b).)*)*(?(o)(?!)))</table>");
        return reg.Replace(htmlstr, str2);
    }
    //调用
    string htmlstr = "上略一千字 <table 一些样式代码 id='xlstable' 另一些样式代码>...... </table>下略500字";
    string str2 = " <table> <tr> <td>广告 </td> </tr> </table>";
    richTextBox2.Text = replaceOldTableByNewTable(htmlstr, str2);
    //输出
    上略一千字  <table> <tr> <td>广告 </td> </tr> </table>下略500字
      

  4.   

    <table 一些样式代码 id='xlstable' 另一些样式代码>...... </table>只要找到这些就行了哦
    客客写的很严谨
    <table\b(?:(?!id=).)*id='xlstable'[^>]*>[^<]*</table>
    然后replace一下就可以了
      

  5.   

    ~_~ ,大家理解的有点出入,string htmlstr=  "一些html代码<table 一些样式代码 id='xlstable' 另一些样式代码>...... </table>另一些html代码";
    string str2= "<table><tr><td>我的新表格</td></tr></table>"期待结果:
    "一些html代码<table><tr><td>我的新表格</td></tr></table>另一些html代码"就是想用我的表格str2替换掉原先的<table id='xlstable'>...</table>这个表格
      

  6.   


    public string replaceOldTableByNewTable(string htmlstr, string str2)
            {
                string value = "";
                Regex reg = new Regex(@"<table[\s|\S]*?(?:id='xlstable')[^>]*>[\s|\S]*?(?:</table>)");
                value=  reg.Replace(htmlstr, str2);
                return value;
            }