// TextBox1.Text的内容如下
// aaaaaaaaaaa<span id="span1"/>bbbbbbbbbbb<span id="span2"/>ccccccccstring body = TextBox1.Text;
string[] bodys = Regex.Split(body, @"<span\b([^>]*?)/>", RegexOptions.IgnoreCase);
for (int i = 0; i < bodys.Length; i++)
{   
   Response.Write(bodys[i] + "<br/>");
}分割后,按理是3个段,为什么成为 6个段呢?

解决方案 »

  1.   

    试试
    string[] bodys = Regex.Split(body, "<span\\s*id=\"span\\d\"/>", RegexOptions.IgnoreCase);
      

  2.   

    正则表达式改为:@"<span\b[^>]*/>"
      

  3.   

    没什么,多了对括号而以,改成string body = TextBox1.Text;
    string[] bodys = Regex.Split(body, @"<span\b[^>]*/>", RegexOptions.IgnoreCase);
    for (int i = 0; i < bodys.Length; i++)
    {   
       Response.Write(bodys[i] + "<br/>");
    }即可,顺便说一下,用[^>]*就可以了,用贪婪匹配有点画蛇添足的样子。
      

  4.   

    其实楼主注意看一下匹配出来的结果就应该知道问题出来哪,根本不用特地到这里提问的呢。多看看运行结果或是出错提示,应该瞬间就可以得到解决问题的答案的,也算是debug能力的锻炼呢。加油吧。
      

  5.   

    msdn 上说:如果将捕获括号用于 Regex.Split 表达式中,则任何捕获的文本将包含在生成的字符串数组中。所以请把正则表达式中的括号去掉,因为它表示捕获组,也会出现在结果中。
      

  6.   

    是啊,平时海真没注意这一点, 总以为和String.split原理一样,原来还是有点区别的。