高分求C#正则表达式,如何排除指定字符串?
<td>       asdfTDtdasdf    <      td>       TDtdss       </TD>    asdTDtdfasd    </TD>    
 例如上句,要求必须满足如下3条: 
 1>       想要取处于 <td和 </td> 之间的内容; 
 2>        <td与 </td> 之间不能再包含 <td字样; 
 3>        <td与 </td> 之间也不能包含 <      td字样,有空格也一样视为是 <td;   
 本例的运行结果应为      TDtdss       
 请高手指教如何写正则表达式,感谢! 
------解决方案--------------------也就是只取最内层的 <td> ... </td> 是吧,那么 <td> ... </td> 之间是否可能有其它 <...> 标签,也就是是否可能出现“ <”和“> ”这两个字符,如果不会,那么很容易,这样   
 string yourStr = .............; 
 string result = string.Empty; 
 Match m = Regex.Match(yourStr, @ "(? <= <\s*td[^> ]*> )[^ <> ]*(?= </td> ) ", RegexOptions.IgnoreCase); 
 if (m.Success) 
     result = m.Value;     
 如果有可能,那么你这个就相当麻烦了,平衡组实现起来有困难,如果确实是这样的,那我看看用状态机来实现吧
------解决方案---------------------_-#,是我把问题想复杂了,因为你只要最内层的 <td> ... </td> ,所以可以直接用正则来取,无论其中是否有其它 <...> 标签     
 string test =  " <td>   asdfTDtdasdf  <  td>   TDt <p> fdsa </p> dfdafds <br /> sfdsaf <  div> dfd </div> sas   </TD>  asdTDtdfasd  </TD>  "; 
 string result = string.Empty; 
 Match m = Regex.Match(test, @ "(? <= <\s*?td[^> ]*> )(([^ <> ]*(?: <(?!(?:\s*?td|/td> ))[^> ]*> )+?[^ <> ]*?)+|[^ <> ]*)(?= </td> ) ", RegexOptions.IgnoreCase); 
 if (m.Success) 
     result = m.Value;     
 让我倒塌的是,开始写了一个比上面简单的正则,在正则测试工具里通过,但是在.net的程序里就会导致程序崩溃,就是匹配不出来,无奈,只好降低效率,用上面的写法了
------解决方案--------------------string[] slist = { " <td>   asdfTDtdasdf  <  td>   TDtdss   </TD>  asdTDtdfasd  </TD>  ", 
 	 " <td>   asdfTDtdasdf  <  td>    <div> TDtdss  </div>   </TD>  asdTDtdfasd  </TD>  "		 
 }; 
   Regex re = new Regex(@ " <\s*td[^> ]*> ((?>  <\s*td[^> ]*> (? <NESTEDTD> )| </td> (? <NESTEDTD2> )|.)*)(?(NESTEDTD)(?!))(?(NESTEDTD2)(?!)) </td>  ",RegexOptions.IgnoreCase|RegexOptions.Singleline); 
   foreach(string s in slist) 
   { 
 	Console.WriteLine( "{0}: ",s);   
 	Match m = re.Match(s); 
 	if (m.Success) 
 	{ 
 		Console.WriteLine( "{0} ",m.Groups[1].Value); 
 	} 
 	else 
 	{ 
 		Console.WriteLine( "no match "); 
 	} 
   }