(?:^|(?<!<(?:a|pre)\b(?>[^<>]*))>)(?>[^<>]*)(?:<|$)这是用于将文章中的关键词替换成链接且并替换第一次出现的关键词所用的正式表达式,表达式效率很高,但有些问题:比如,如果一篇文章中同时具有“中国”和“中国人民”这两个关键词,结果替换后,就成了
<a href='tags.aspx?tag=<a href='tags.aspx?tag=中国'>中国</a>人民'>seo</a> 
其他的都能正常替换
我不懂正则,所以请高人帮我解释下,当然能帮改下也可以。十分感谢!

解决方案 »

  1.   

    1、关键字:se seo
    2、原字符串:seo seo seo seo
    3、替换后的结果:<a href='tags.aspx?tag=se'>se</a>o 再次感谢
      

  2.   


    按道理来说,替换后的结果应该是这样的吧
    <a href='tags.aspx?tag=se'>se</a>o <a href='tags.aspx?tag=seo'>seo</a> seo seo
      

  3.   

    很不好意思,老大,我举的例子确实有点问题。经再次测试,如果关键词按 se seo排,得到的结果是你说的那样,如果反过来排,结果却是这样了:
    <a href='tags.aspx?tag=<a href='tags.aspx?tag=se'>se</a>o'>seo</a>
      

  4.   


    哦,是关键字有包含关系时,用那一个帖子里的写法,要求被包含的在前面,这个在那个帖子时没有加说明在另一个类似需求的帖子里,我对关键字的顺序是加了说明的
    求。给文章关键字加链接函数。非常复杂。如何保证关键字的先后顺序,就是另一个涉及到算法的问题了,呵呵,这就不是我所擅长的了,可以找wuyi8808 问问