滤掉 html标记_正则表达式问题
大家好!   我遇到了一个正则表达式问题       
 Regex   rx   =   new   Regex(@ "( <\/?(?!td|tr|u|table|img|div|span|br|object|select|/select|OPTION|/OPTION|param| |sup|/sup|sub|/sub|p|/p)[^> \/]*)\/?> | <![^> ]+>  ",   RegexOptions.IgnoreCase); 
 string   result   =   rx.Replace(str,    " "); 
 我的目的是   滤掉   html标记(除tr|u|table|img|div|span.....特殊标记)   
 遇到问题是   
 str= " <font> 111 <IMG   ondblclick=Modify(this);   title=\ "wertewt <    <    <   123.GIF\ ">  </font>  ";      
 应得到结果:   
 111 <IMG   ondblclick=Modify(this);   title= "wertewt <    <    <   123.GIF "   >      
 但实际   我得到的是   111 <IMG   ondblclick=Modify(this);   title= "wertewt 
------解决方案--------------------你想滤掉 html 标记,建议你不要用一个模式处理所有标记,可以写一组模式,每个模式滤掉一个标记,用循环来处理。这样做有两个好处,首先,每个标记的模式都很简单,日后很好理解,其次,你可以在外部文件中记录这组模式,当你想增加两个标记时不需要重新编译。   
 比如去掉 font,用这个模式把原来的串换成 $1,(?is: <font> (.*?) </font> )
------解决方案--------------------LS是否考虑过下面这个问题 
  <IMG ondblclick=Modify(this); title=\ "wertewt <  <  < 123.GIF\ ">  
 如果考虑并解决了,那么一个正则就全部解决了,根本用不着多个正则,如果上面这个问题没有解决,那么再多的正则也没用   
 另外就是正则效率本来就低,如果再写多个正则,每个正则去循环替换一次,那效率就不用想了。。。   
 因为可能在 " "或 ' '内锯含“ <”和“> ”这两个字符,所以无法使用平衡组来做,只能用多重匹配,但写了一个,在测试工具里通过,程序里会导致程序崩溃,正则解决这类问题还是比较吃力的   
 在另一个帖子里我用有限状态机实现了,可以做下参考 
 http://community.csdn.net/Expert/topic/5744/5744945.xml?temp=.806698   
------解决方案--------------------html的规则其实很复杂的。 <(\w+)> [^ <]+ <\1> 这样的,或者没有后面部分的。或者嵌套的。规则复杂的还是交给.net作好了。你html放到webbrower里头,然后用outterText获取文本。