要求匹配:不以<a 为开始 以</a>为结尾的任意长度html的内容 
即 xxx <a  ....</a> xxxxx 
要得到那些xxxx

解决方案 »

  1.   

    你只要去匹配<a 开头 </a>结束的标记之中的所有内容替换成空就行了。为什么非要描述成非什么什么的呢?
      

  2.   

    匹配<a>*</a>标记的正则: <a.*?[^>]>
      

  3.   

     Asp.net(C#)高手交流群(39364250),欢迎高手加盟!
      

  4.   

    ((?<=^|<a.*?</a>).*?(?=$|<a.*?</a>))
      

  5.   

    因为可能会有换行,所以还要在前面加上(?s)
    即:
    (?s)((?<=^|<a.*?</a>).*?(?=$|<a.*?</a>))
      

  6.   

    提取的话可以用下面的正则
    (?<=</a>|^)[\s\S]*?(?=<a|$)不过不明白这算什么需求,为什么不直接替换掉?
    string result = Regex.Replace(str, @"<a[^>]*>[\s\S]*?</a>", "", RegexOptions.IgnoreCase);
      

  7.   


    同意楼上的观点,不过有个小改进,我认为改成这样更好:string result = Regex.Replace(str, @"(?si)<a\b(?:""[^""]*""|'[^']*'|[^""'>])*>.*?</a>", "");因为可能出现 <a abc='if (x > 6){}'>OK</a> 这种情况,所以 <a[^>]*> 是不完善的。另外,(?s) 是 RegexOptions.Singleline 的含义,表示 . 可以匹配换行符,就不必用 [\s\S] 表示匹配包括换行符在内的任何字符了。(?i) 表示 RegexOptions.IgnoreCase。