是这样的 有一个html字符串 我想从里面截取一个div出来  我可以定位这个div的开始 但不知道如何快速的找寻这块div的结束标签  目前我的思路是这样的
定位到这个div的开始(假设叫divA) 然后声明一个div结束标签的计数变量(count) 默认开始时1  表示从divA开始遇到的第一个div结束标签和他匹配
然后从divA开始搜索 如果发现一个div开始标签则 count++ 那么就表示要多匹配一个div的结束标签 遇到一个结束标签则 count-- 如果到0了就表示 当前的div结束标签就是divA的结束标签我就想问问 能不能不用这么别扭的办法解决这个问题
那些代码编辑器是怎么匹配开始和结束然后可以代码折叠的?<div id="XXX" class="XXX"....这里未知....</div>还有能不能不要说导入webbrowser然后通过getE..ById之内的去获取....感觉也有点别扭 这样感觉还要搞一个webbrowser出来 但实质上这个这东西又不显示出来的 ..只是默默的截取出来就完了HTML标签搜索

解决方案 »

  1.   

    参考正则平衡组
    看后面div匹配
      

  2.   


    string test = @"<div id=""0"">
        0
    </div>
    <div id=""1"">
        1
        <div id=""2"">
            2
        </div>
    </div>";
    Regex reg = new Regex(@"(?isx)                      #匹配模式,忽略大小写,“.”匹配任意字符
                          <div[^>]*>                      #开始标记“<div...>”
                              (?>                         #分组构造,用来限定量词“*”修饰范围
                                  <div[^>]*>  (?<Open>)   #命名捕获组,遇到开始标记,入栈,Open计数加1
                              |                           #分支结构
                                  </div>  (?<-Open>)      #狭义平衡组,遇到结束标记,出栈,Open计数减1
                              |                           #分支结构
                                  (?:(?!</?div\b).)*      #右侧不为开始或结束标记的任意字符
                              )*                          #以上子串出现0次或任意多次
                              (?(Open)(?!))               #判断是否还有'OPEN',有则说明不配对,什么都不匹配
                          </div>                          #结束标记“</div>”
                          ");
    MatchCollection mc = reg.Matches(test);
    foreach (Match m in mc)
    {
    richTextBox2.Text += m.Value + "\n--------------------\n";
    }
      

  3.   

    至于那两个绿色的问题.....好吧其实我也不知道记得当时写这个的时候 也就花了两天的时间研究
    那你知道为什么你那个软件在win7系统上运行的很好,可以修改别的进程内存,换到xp上就不能修改了呢??
    (试过了十几台电脑,都是win7可以,xp不行)需要加什么代码,或者改什么吗??