文本:百度好啊,百度空间妙啊,百度空间应用呱呱叫啊。百度是全球最大的中文搜索引擎下面每个只替换二次,说明问题。
替换:'百度' 替换成 '<A href=$>百度</A>'
      '百度空间' 替换成 '<a href=#>百度空间</a>'问题:
如果从'百度空间'开始第一个替换,第二个是'百度',就会成这样。文本替换为:<A href=$>百度</A>好啊,<a href=#><A href=$>百度</A>空间</a>妙啊,<a href=#>百度空间</a>应用呱呱叫啊。百度是全球最大的中文搜索引擎总结:里面问题就是最短的“百度”会匹配“百度空间”前的两个字,从而致使“百度空间”对应的链接失效,而且html代码嵌套错误。题外话:以前做替换。我喜欢用从字符length长的开始,逐步到short。但是那只能避免一次替换的错误。而不能避免像这样长篇幅重复替换。
有的朋友会说,你不如从短到长,这样还是有问题。=====================================================
C#代码如下:
 private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = "百度好啊,百度空间妙啊,百度空间应用呱呱叫啊。百度是全球最大的中文搜索引擎,占有 70%以上的网页搜索市场份额.百度致力于让网民更便捷地获取信息,找到所求,主要提供网页、MP3、图片、视频、新闻等搜索服务,以及贴吧、知道、百度空间等搜索社区产品.";
            Regex re = new Regex("(百度空间)");
            richTextBox1.Text = re.Replace(richTextBox1.Text, "<a href=#>百度空间</a>", 2);
            Regex re1 = new Regex("百度");
            richTextBox1.Text = re1.Replace(richTextBox1.Text, "<A href=$>百度</A>", 2);
        }==========================================
希望大家给点处理办法。

解决方案 »

  1.   

    本帖最后由 lxcnn 于 2009-12-07 09:37:59 编辑
      

  2.   

    string str = "百度好啊,百度空间妙啊,百度空间应用呱呱叫啊。百度是全球最大的中文搜索引擎 ";                    
                Regex re1 = new Regex("百度");
                Regex re2 = new Regex(@"<A[^>]*>百度</A>空间");
                str = re1.Replace(str, @"<A href=$>百度</A>");
                str = re2.Replace(str, @"<a href=#>百度空间 </a>");           
                MessageBox.Show(str);
      

  3.   

    to:lxcnn这个正则真是牛X。。看的我都汗颜结贴给分。。
      

  4.   


                String S = "百度好啊,百度空间妙啊,百度空间应用呱呱叫啊。百度是全球最大的中文搜索引擎";
                S = S.Replace("百度空间", "<a href=#>[[[]]]]空间 </a>")
                    .Replace("百度", "<A href=$>百度 </A>").Replace("[[[]]]]", "百度");
                MessageBox.Show(S);
      

  5.   

    string s = "百度阿斯蒂芬<a>百度空间</a>撒地方啊百度";
    Regex re1 = new Regex("(^)|([^>])百度");
    s = re1.Replace(s, "$2<a>百度</a>");