日期:2014-05-20  浏览次数:20416 次

正则去掉一个Table标记
以下用C#这两个正则表达式TABLE我怎么都去不掉,
//                         string   temp   =   System.Text.RegularExpressions.Regex.Replace(str, " <TABLE.*?> (.*)? </TABLE> ", " ");
                      string   temp   =   System.Text.RegularExpressions.Regex.Replace(str, " <TABLE.*?> [\\s\\S]*? </TABLE> ", " ");


string   str=@ " <TABLE  
            style= "BORDER-RIGHT:   #999   1px   solid;   BORDER-TOP:   #999   1px   solid;   MARGIN:   0px   8px   8px   0px;   BORDER-LEFT:   #999   1px   solid;   BORDER-BOTTOM:   #999   1px   solid "  
            cellSpacing=0   cellPadding=0   width=300   border=0>
               
                <TR>
                    <TD   align=middle> <IMG   src= "../../../../img/2007-01/24/xin_4501042410542722582421.jpg "   border=0> </TD> </TR>
                <TR>
                    <TD   class=px12  
                    style= "PADDING-RIGHT:   3px;   PADDING-LEFT:   8px;   PADDING-BOTTOM:   3px;   LINE-HEIGHT:   18px;   PADDING-TOP:   6px "  
                    align=left   bgColor=#e0e0c9> 今年春运客流提前到来,昨天广州火车站广场已人流汹涌。   骆昌威  
                摄 </TD> </TR> </TABLE> ";

------解决方案--------------------
楼主正则表达式的问题出在 <TABLE.*?> 这个“.”上,因为要替换的字符串中 <TABLE后是个回车,而“.”是不能匹配回车符的,换成这样就可以了

string temp = System.Text.RegularExpressions.Regex.Replace(str, " <TABLE[\\s\\S]*?> [\\s\\S]*? </TABLE> ", " ",RegexOptions.IgnoreCase);


------解决方案--------------------
如果只保留文字的话: string temp = System.Text.RegularExpressions.Regex.Replace(str,@ " <[^> ]*> ", " ");