求一个正则表达式,取出标签外的字符比如:有“2008年8月18日中国再拿四枚<a href="www.xxx.com" title="奥运金牌">金牌</a>,使中国的金牌总数达到39枚”匹配“使中国的金牌总数达到39枚”中的“金牌”一词怎么写?请教

解决方案 »

  1.   

      string str ="2008年8月18日中国再拿四枚 <a href=\"www.xxx.com\" title=\"奥运金牌\">金牌 </a>,使中国的金牌总数达到39枚";
                Regex r = new Regex("<a.*>(?<title>.*)</a>", RegexOptions.IgnoreCase);
                MatchCollection mc = r.Matches(str);
                foreach (Match m in mc)
                {
                    MessageBox.Show(m.Groups["title"].Value);
                }
      

  2.   

    呃,楼上的意思理会反了,我不想要A标签里面的东西,要A标签以外的东西其实是这样的,我想把“2008年8月18日中国再拿四枚 <a href="www.xxx.com" title="奥运金牌">金牌 </a>,使中国的金牌总数达到39枚”这里面的“金牌”这个词加上链接,但A标签里的词不要加怎么写啊?
      

  3.   

    string result = Regex.Replace(str, @"(?<=^|</a>)[^<>]*(?=<a[^>]*>|$)", delegate(Match m) { return m.Value.Replace("金牌", @"<a href=""www.yyy.net"">金牌</a>"); }, RegexOptions.IgnoreCase);
      

  4.   

    呃,很不错,谢了。。只是还有些问题,当“2008年8月18日中国再拿四枚<a href=\"www.xxx.com\" title=\"奥运金牌\">金牌</a>,使中国的金牌总数达到<b>39枚</b>”或者这里是个段落时就失灵了正则看不懂啊,帮我解决下行吧
      

  5.   

    呵呵,意外意外,改了思路却忘了改中间的内容了string result = Regex.Replace(str, @"(?<=^|</a>)[\s\S]*?(?=<a[^>]*>|$)", delegate(Match m) { return m.Value.Replace("金牌", @"<a href=""www.csdn.net"">金牌</a>"); }, RegexOptions.IgnoreCase);
      

  6.   


    嗯,这次就成了,完全符合要求。问了一天了,终于整到个答案,谢了哈
    早上问了一贴都没被人发现到,http://topic.csdn.net/u/20080819/10/73412df2-4f3b-4b78-9648-6efc9e1e3597.html