正则表达式影响Yahoo Pipes中特定域以外的所有URL

时间:2014-07-01 16:12:22

标签: regex twitter yahoo-pipes

在雅虎管道中使用Twitter搜索RSS源时,我正在尝试清理长篇Twitter链接并用缩短版本替换它们。为此,我想匹配任何不在Twitter域上的链接文本。通常,这些是t.co链接。

以下是我想要做的一个例子:

<a href="http://t.co/AiyTQKaAoU">http://www.denverpost.com/environment/ci_26064841/colorado-coal-mine-mulls-appeal-after-federal-court ...</a>

进入

<a href="http://t.co/AiyTQKaAoU">http://t.co/AiyTQKaAoU</a>

我的正则表达式以<a .*?href=['""](.+?)['""].*?>(.+?)</a>开头,匹配所有链接。

然后我尝试<a .*?href=['""]!(www\.twitter\.com\/?)['""].*?>(.+?)</a>从结果中删除twitter.com,但它无效。我做错了什么?

P.S。我不需要触摸Twitter链接,因为这会弄乱所有'@'和'#'链接。

另外:@ Avinash-Raj的解决方案适用于演示,但不适用于Yahoo Pipe。有人熟悉Yahoo Pipes中的正则表达式吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用以下正则表达式捕获href属性的值,并在替换部件中再次使用它来修改<a>标记。它必须适用于没有字符串twitter.com

的行
^(?:(?!.*twitter\.com.*$))(<a href=\"([^\"]*)\">).*?(<\/a>)

DEMO

答案 1 :(得分:0)

在雅虎管道中,类似这样的事情应该:

  • pattern:href="(http://t.co[^"]*)"[^>]*>http://[^<]*
  • 替换:href="$1">$1

此处有demo pipehere's another, based on your pipe

PS:你知道你可以在一个 Regex 运算符中放置多个正则表达式替换。用这种方式阅读起来比较容易。