<row>
 <data/>
<data>ceshi1</data>
<data>测试2</data>
<data/>
<data>测试3</data>
<data/>
</row> 给定如下字符串, 我需要获取所有<data></data> 里面的数据, 

解决方案 »

  1.   

    可通过linq TO XML获取数据
    如XElement xe= XElement.Parse(xml);
    var query = from x in xe.Descendants("")
      select new
      {
      ID=x.Attribute("").Value,
      ...
      };
      

  2.   

    (?<=<data>)[^<]+(?=</data>)
      

  3.   

    RegularMatch match = new RegularMatch();
    List<string> ifo = match.RecursionGroups("<data>(?<result>[\\s\\S]*?)</data>", ss);
    ss 是这个字符串的内容
      

  4.   

    (<data>)[^<|(\<)]+</data>)
      

  5.   

    写错了,应该是
    <data>([^<]|[\<])+</data>
      

  6.   

    Regex reg = new Regex(@"(?is)<data>(.*?)</data>");
    MatchCollection mc = reg.Matches(yourStr);
    foreach (Match m in mc)
    {
        
    }
      

  7.   

    如梦上班了啊 string yourStr = @"<row>
     <data/>
    <data>ceshi1</data>
    <data>测试2</data>
    <data/>
    <data>测试3</data>
    <data/>
    </row>";
                Regex reg = new Regex(@"(?is)(?<=<data>).*?(?=</data>)");
                MatchCollection mc = reg.Matches(yourStr);
                foreach (Match m in mc)
                {
                    Console.WriteLine(m);
                }
      

  8.   

                string str = "<row><data/><data>ceshi1</data><data>测试2</data><data/><data>测试3</data><data/></row>";
                Regex reg = new Regex(@"(?<=<data>)([^<]+)(?=</data>)");
                MatchCollection match = reg.Matches(str);
                foreach (Match m in match)
                {
                    Response.Write(m.Groups[1].Value + "<br/>");
                }
    /*
    结果:
    ceshi1
    测试2
    测试3*/