用正则表达式和雅虎管道替换html链接

时间:2010-01-12 20:07:21

标签: regex yahoo-pipes

我的问题类似于这里的问题:

Regular expression on Yahoo! pipes

我通过friendfeed将我的gmail状态连接到twitter,但不幸的是,他们截断了链接文本,并且一旦他们进入twitter,我的链接就无法正常工作。我需要能够接受这个:

 <div style="margin-top:2px;color:black;">/good jquery tips 
   <a rel="nofollow" style="text-decoration:none;color:#00c;" target="_blank"  href="http://james.padolsey.com/javascript/things-you-may-not-know-about-jquery/" title="http://james.padolsey.com/javascript/things-you-may-not-know-about-jquery/">
      http://james.padolsey.com/javascr...
   </a>
</div> 

并用href属性替换截断的链接,所以它看起来像这样:

 <div style="margin-top:2px;color:black;">/good jquery tips 
   <a rel="nofollow" style="text-decoration:none;color:#00c;" target="_blank"  href="http://james.padolsey.com/javascript/things-you-may-not-know-about-jquery/" title="http://james.padolsey.com/javascript/things-you-may-not-know-about-jquery/">
      http://james.padolsey.com/javascript/things-you-may-not-know-about-jquery/
   </a>
</div> 

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

Anthony警告说,您无法使用正则表达式安全地解析HTML,因此如果您选择使用Pipes,请权衡相关风险。

假设您只想替换此特定结构,并且如果源中的任何内容发生微妙变化,则期望它会中断,以下内容适用于您的目的:

取代:

(<a\s[^>]*href=")(.*?)("[^>]*>).*?(</a>)

使用:

$1$2$3$2$4

(使用 s i 选项)