用boost正则过滤掉html里面的所有连接  用<a(.*?)</a> 是没问题的但是我想排除和文字混合在一起的连接,比如下面的一段文字里面的连接保留,怎么做呢?---------------------我采访<a href=http://data.2008.163.com/country/home/0005000A0BeC.html>中国</a>举摔柔(<a href=http://data.2008.163.com/item/home/0005000C0CDB.html>举重</a>、摔跤、柔道)中心主任马文广,他告诉我,举重不是比力气,我们认为的举重就是谁力气大谁最厉害,其实不对。马文广说,举重特别能展现人的肌肉美,运动员获胜既要凭借肌肉的力量,也要凭借智慧,才能表现出举重的精髓——力道之美。</P>保留上面的<a href=http://data.2008.163.com/country/home/0005000A0BeC.html>中国</a>

解决方案 »

  1.   

    那你只好让它不要匹配前后有括号的这个字符串啦。正则表达式里是有条件匹配的操作符的,只是我不知道在boost里是怎么样的。在python中可以用?> 或?<之类的操作来实现
      

  2.   

    boost也可以使用条件匹配,但是问题是你要有个特殊的标记来区分是你要过滤的和不要过滤的.
    对计算机来说,<a href=http://data.2008.163.com/country/home/0005000A0BeC.html>中国 </a>和文本外的<a href=http://data.2008.163.com/country/home/0005000A0BeC.html>中国 </a>有什么区别呢? 
    你得确定这两个的不同才能写出特殊的表达式(?:pattern)  
    (?=pattern) 正向预查, 
    (?!pattern) 负向预查,
    [^xyz]
    这些语法boost是都支持的
      

  3.   

    贪婪匹配, 即多重匹配, 如果(<a>...</a>)+(出现多次), 全部replace掉