比如,页面里有多个这种相同的代码块(当然是循环出来的),能不能做到只采集规定的前几个(比如就想要前3个div或是前5个div)
<div>
<ul 其它属性>
<li ....>
...
...
其他标签
</div><div>
<ul 其它属性>
<li ....>
...
...
其他标签
</div><div>
<ul 其它属性>
<li ....>
...
...
其他标签
</div>

解决方案 »

  1.   

    完全可以啊正则是首选
    其次用index也可以
    比如取第二个div
    string str=XX.indexof("<div>",XX.indexof("<div>"));
      

  2.   

    如果那个层有特殊的属性 比如id=“XX”
    那么你用indexof就更好了 
      

  3.   


    r = new Regex("<li style=\"width:200px; margin-top:21px;\">.+?</div>");
    mc = r.Matches(tblb);
    应该改成下面这样?mc.count为0
    r = new Regex("<li style=\"width:200px; margin-top:21px;\">.+?</div>{5}");
    r = new Regex("<li style=\"width:200px; margin-top:21px;\">.+?</div>");
    mc = r.Matches(tblb+"{5}");= r.Matches(tblb);
    还是下面这样呢?这个也不对
    r = new Regex("<li style=\"width:200px; margin-top:21px;\">.+?</div>");
    mc = r.Matches(tblb+"{5}");
      

  4.   

    楼上说的很清楚了啊?你要嫌正则表达式不好用就用index,别等被人给你写源码啊
      

  5.   

    如果没有嵌套的话
              string str = @"<div>
    <ul 1>
    <li ....>
    ...
    ...
    1
    </div><div>
    <ul 2>
    <li ....>
    ...
    ...
    2
    </div><div>
    <ul 3>
    <li ....>
    ...
    ...
    3
    </div>";
              Regex reg = new Regex(@"(?is)(?:<div\b.*?</div>\s*){2}");
              foreach (Match m in reg.Matches(str))
                  Console.WriteLine(m.Value);
      

  6.   

    楼上可以解释一下
    (@"(?is)(?:<div\b.*?</div>\s*){2}");
    谢谢了