^[abc]\.*[/abc]$条件4可以省略吧。碰到[/abc]就已经自动匹配结束了。

解决方案 »

  1.   

    string S = @"a[abc]Zswang[/abc]b[abc]路过[/abc]c";
    Text = Regex.Replace(S, @"\[abc\][^\[]*\[\/abc\]", @"", RegexOptions.None); //abc
      

  2.   

    楼上兄弟  
    a[abc]Z[swang[/abc]b[abc]路过[/abc]c
    这个就出不来了
      

  3.   

    (\[abc\])(?!\[abc\]|\[/abc\])(.*?)(\[/abc\])a[abc]Zswang[/abc]b[abc]路过[/abc]c
    [abc]abcd[/abc]
    [abc][/abc][/abc][abc][aabc][/abc]实际可以简化一下
      

  4.   

    [abc](?(?=([abc]|[/abc]))([/abc]|.*[/abc]))
      

  5.   

    ^\[abc\](?!.*\[abc\]).*?\[/abc\]$第4条无意义,可以去掉
    另外就是这里的[abc]是楼主举的例子,如果实际应用中包含特殊字符还需要转义
    还有就是楼主要这个正则是用在什么情况下的,验证,提取或替换等等用法是不一样的