【问题标题】:Regex affecting all URLs other than a specific domain in Yahoo Pipes正则表达式影响 Yahoo Pipes 中特定域以外的所有 URL
【发布时间】:2014-07-10 15:54:05
【问题描述】:

在使用 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,但它不起作用。我做错了什么?

附:我不需要触摸 Twitter 链接,因为这会弄乱所有“@”和“#”链接。

补充:@Avinash-Raj 的解决方案在演示中有效,但在 Yahoo Pipe 中无效。有人熟悉 Yahoo Pipes 中的正则表达式吗?

【问题讨论】:

    标签: regex twitter yahoo-pipes


    【解决方案1】:

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

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

    DEMO

    【讨论】:

    • 但这会影响所有链接,包括我不想修改的链接...我需要弄清楚如何检查域名,并且只有在不是 twitter.com 时才采取行动。还有什么想法吗?
    • 因此,只有当该行中没有 twitter.com 时,您才希望像上面那样进行修改。
    • 它在您的演示中有效,但在 Yahoo Pipe 中无效。你也可以帮忙吗?你可以从这里克隆它:link——你建议的正则表达式在右上角的节点中。
    【解决方案2】:

    在 Yahoo Pipes 中,应该这样做:

    • 模式:href="(http://t.co[^"]*)"[^&gt;]*&gt;http://[^&lt;]*
    • 替换:href="$1"&gt;$1

    这是demo pipehere's another, based on your pipe

    PS:你知道你可以在一个 Regex 运算符中放置多个正则表达式替换。这样更容易阅读。

    【讨论】:

    • 谢谢,@janos!但是,它在我的特定管道中不起作用。您能否对其进行调整以解析以下源代码:Rolling Coal: Conservatives ‘screw’ Obama by modifying trucks to spew toxic black smoke &lt;a rel="nofollow" target="_blank" href="http://t.co/BWxgcA8j3h"&gt;http://www.rawstory.com/rs/2014/07/07/rolling-coal-conservatives-screw-obama-by-modifying-trucks-to-spew-toxic-black-smoke/&amp;nbsp;…&lt;/a&gt;
    • 你能分享你管道的链接吗?克隆它并在那里修复对我来说会更容易
    • The pipe is here: -- 右上角。谢谢!
    • Janos,你还需要我做些什么来完成这件事吗?
    • @Bogdan 我在帖子中更新了模式,并根据您的管道创建了一个演示。如果您还需要帮助,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多