例如字符串str="<div fdsedf> sd*&f </div>dfsdf<div lkglf> df </div>";
我想把div内的内容,div外的内容,分别取出来。
取出后内容为str1[0]="<div fdsedf> sdf </div>"
            str1[1]="<div lkglf> df </div>";
            str2[0]=" sd*&f ";
            str2[1]="";
我写的正则,只能取到内部的内容,外部的都为空,正确的应该怎么写
string Partent=@"(?<a><div.*?</div>)(?<b>.*?)";
string str = this.textBox2.Text;
Regex r = new Regex(Partent, RegexOptions.IgnoreCase|RegexOptions.Singleline);
MatchCollection m = r.Matches(str);
for (int i = 0; i < m.Count; i++) 
{
Group g1 = m[i].Groups["a"];
Group g2 = m[i].Groups["b"];
MessageBox.Show(g1.Captures[0].ToString());
MessageBox.Show(g2.Captures[0].ToString());
}

解决方案 »

  1.   

    例如字符串str="<div fdsedf> sdf </div>sd*&f<div lkglf> df </div>";
    我想把div内的内容,div外的内容,分别取出来。
    取出后内容为str1[0]="<div fdsedf> sdf </div>"
                str1[1]="<div lkglf> df </div>";
                str2[0]="sd*&f";
                str2[1]="";
    我写的正则,只能取到内部的内容,外部的都为空,正确的应该怎么写
    string Partent=@"(?<a><div.*?</div>)(?<b>.*?)";
    string str = this.textBox2.Text;
    Regex r = new Regex(Partent, RegexOptions.IgnoreCase|RegexOptions.Singleline);
    MatchCollection m = r.Matches(str);
    for (int i = 0; i < m.Count; i++) 
    {
    Group g1 = m[i].Groups["a"];
    Group g2 = m[i].Groups["b"];
    MessageBox.Show(g1.Captures[0].ToString());
    MessageBox.Show(g2.Captures[0].ToString());
    }
      

  2.   

    str2[0]=" sd*&f ";??? do you mean "dfsdf"??try along the line of string str="<div fdsedf> sd*&f </div>dfsdf<div lkglf> df </div>"; string Pattern=@"(?<a><div.*?</div>)"; string[] ss = Regex.Split(str,Pattern,RegexOptions.IgnoreCase|RegexOptions.Singleline); foreach (string s in ss)
    Console.WriteLine(s);
      

  3.   

    saucer(思归) :第二次发的是正确的
      

  4.   

    string str="<div fdsedf> sdf </div>sd*&f<div lkglf> df </div>";
    Response.Write(System.Text.RegularExpressions.Regex.Replace(str, @"<div.*?>(.*?)</div>(.*?)", "$1/$2", System.Text.RegularExpressions.RegexOptions.IgnoreCase));
      

  5.   

    uhxq(小灰(http://blog.csdn.net/iuhxq)) :我不是替换
      

  6.   

    我只会替换,呵呵msn:iuhxq at hotmail.com
      

  7.   

    你再试试public static string ConvertAtag23(string s)
    {
    string a="",b="";
    s=@"<div fdsedf> sdf </div>mfsdf--$#@#<d<div lkglf> df </div>";
    string Partent=@"(?<a><div.*?</div>)(?<b>((?!<div)[\W\w])*)"; foreach(Match m in Regex.Matches(s,Partent,RegexOptions.IgnoreCase|RegexOptions.Singleline))  
      {  
       a += m.Groups["a"].Value;  
    b += m.Groups["b"].Value;  
      }
    return a+"#"+b;
    }
      

  8.   

    呵呵,把调试这句去掉
    s=@"<div fdsedf> sdf </div>mfsdf--$#@#<d<div lkglf> df </div>";
      

  9.   

    Dim reg As New Regex("(?<1><div[^~]*?</div>)(?<2>[^<]*)")        Dim mc As MatchCollection = reg.Matches(Me.TextBox1.Text)
          
            Dim m As Match        For Each m In mc
                MsgBox(m.Groups("1").Value)
                MsgBox(m.Groups("2").Value)
            Next