<div style="float:left;"><a href="/z/TopQuestion.htm">全部问题</a> <span>&gt;</span><a href="/z/c16777216.htm">游戏</a><span>&gt;</span><a href="/z/c18284544.htm">金山游戏</a><span>&gt;</span><a href="/z/c18297088.htm">其它金山游戏</a><span>&gt;</span>问题页</div>我想提取的结果是:
其它金山游戏也就是最后一个 .htm"> 和 </a><span>&gt;</span>问题页</div>  中间的值。自己正则有点烂。总是学了忘!。蹩脚的写了个正则 .htm">(.*?)</a><span>&gt;</span>问题页 结果返回肯定不行,匹配了一大窜。不知道怎么弄。高手帮帮忙。谢谢
为什么想匹配最后一个,因为这是个面包屑导航,很有可能会少几个栏目,但是我还是需要获取最后一个 .htm"> 和 </a><span>&gt;</span>问题页</div>  中间的值。

解决方案 »

  1.   

    试试这样吧。你规则总结的不是很好。
    string result = Regex.Match(yourHtml,@"TopQuestion.htm(?:[^>]*>){13}([^<]+)").Groups[1].Value;
    看看result是不是对的。如果不对,你贴完整的html或给网址看看。
      

  2.   

    "<a[^>]*>.*?</a>"
    通过匹配获取所有a节点.然后取最后一个索引即为你所需要的值...呵呵..
      

  3.   


    网址是:http://wenwen.soso.com/z/q223219203.htm
      

  4.   

    其实就是想知道有没有正则一次匹配最后一个 .htm"> 和 </a><span>&gt;</span>问题页</div> 中间的值。
      

  5.   


    Regex reg = new Regex(string.Format("(?is)(?<={0}).+?(?={1})", Regex.Escape(@".htm"">"), Regex.Escape(@"</a><span>&gt;</span>问题页</div>")));
    这个可以
      

  6.   

    http://wenwen.soso.com/z/q223219203.htm
    你这网址,用我第一次给你回复的,得到是唯一的结果。就是你要的。
      

  7.   

    to:wuyazhe谢谢。太困了。我小睡一下。回来测试。
      

  8.   

                string y = "<div style=\"float:left;\"><a href=\"/z/TopQuestion.htm\">全部问题</a> <span>&gt;</span><a href=\"/z/c16777216.htm\">游戏</a><span>&gt;</span><a href=\"/z/c18284544.htm\">金山游戏</a><span>&gt;</span><a href=\"/z/c18297088.htm\">其它金山游戏</a><span>&gt;</span>问题页</div>";
                System.Text.RegularExpressions.Regex reg = new Regex(".htm\">\\S*</a><span>&gt;</span>问题页</div>$");
                Match mat = reg.Match(y);
                System.Console.WriteLine("match:" + mat.ToString()+ "#"+mat.ToString().Replace(".htm\">","").Replace("</a><span>&gt;</span>问题页</div>",""));
            }
      

  9.   


    Regex.Match(html, ".htm\">\\w*</a><span>&gt;</span>问题页</div>", RegexOptions.Multiline).ToString().Replace(".htm\">", "").Replace("</a><span>&gt;</span>问题页</div>", "");这个试下
      

  10.   

    搜到 zswang 的老帖C# code
    string s = @"d:\ttt1\cabc2\test3\tets4";
    Console.WriteLine(Regex.Replace(s, @"(.*?)\\([^\\]*)\\([^\\]*)$", "$1\\NewContent\\$3"));string s1 = @"d:\ttt1\cabc2\test3\tets4\tets5";
    Console.WriteLine(Regex.Replace(s1, @"(.*?)\\([^\\]*)\\([^\\]*)$", "$1\\NewContent\\$3"));CSS code
    d:\ttt1\cabc2\NewContent\tets4
    d:\ttt1\cabc2\test3\NewContent\tets5
      

  11.   

    try...Regex reg = new Regex(@"(?is)>(((?!</?a).)*)</a><span>&gt;</span>问ê题琣页?</div>");
    Match m = reg.Match(yourStr);
    if (m.Success)
    {
        richTextBox2.Text = m.Groups[1].Value;
    }