在雅虎管道中使用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中的正则表达式吗?
答案 0 :(得分:1)
您可以尝试使用以下正则表达式捕获href属性的值,并在替换部件中再次使用它来修改<a>
标记。它必须适用于没有字符串twitter.com
^(?:(?!.*twitter\.com.*$))(<a href=\"([^\"]*)\">).*?(<\/a>)
答案 1 :(得分:0)
在雅虎管道中,类似这样的事情应该:
href="(http://t.co[^"]*)"[^>]*>http://[^<]*
href="$1">$1
此处有demo pipe和here's another, based on your pipe。
PS:你知道你可以在一个 Regex 运算符中放置多个正则表达式替换。用这种方式阅读起来比较容易。