在雅虎管道中使用Regex来“清理”RSS提要

时间:2010-08-03 23:27:03

标签: regex rss feeds yahoo-pipes

需要一些帮助才能创建一个从rss Feed中删除某些元素的Yahoo Pipe。 clerify:我会在Yahoo Pipes上使用正则表达式代码。我认为正则表达式语法是通用的吗?

我已经将问题解决了一些子问题:

  1. 删除/删除特定html标记(有自己的类)的正则表达式是什么? 含量

  2. 如何从链接图像中删除链接但保留图像标记?

  3. 如何将顺序类添加到Feed项中找到的所有链接? 如果单个Feed项目中有5个链接,则会为它们指定类:link001,link002,link003,link004,link005 ...

  4. 由于新的帐户限制,代码示例可在此处找到: Using Regex in Yahoo pipes

    正则表达式并不完全是我的强项...所以任何帮助都将不胜感激! 非常感谢!

1 个答案:

答案 0 :(得分:0)

正则表达式语法肯定不是通用的。查看我的regex flavor comparison。不幸的是,雅虎管道文档没有说明他们使用什么样的正则表达式。这些示例看起来像Perl风格的正则表达式,所以我将使用它。

要删除具有特定类属性(例如span)的特定HTML标记(例如someclass),请搜索:

(?si)<span[^<>]*class=["']?someclass["']?[^<>]*>(.*?)</span>

并替换为:

$1

如果您要删除的span标记包含嵌套的span标记,则上述正则表达式将失败。

要删除任何a标记作为其内容中的第一个标记,请搜索:

img

并替换为:

(?si)<a[^<>]*>(<img.*?)</a>

您的问题中的第三项无法单独使用正则表达式。您需要一个设施来增加替换中的数量。我不知道Yahoo Pipes是否支持类似的东西。你真的不需要正则表达式。只需搜索文字$1 并替换为<a

即可

当然,所有关于使用正则表达式操纵HTML / XML的注意事项都适用。正则表达式适用于您提供的示例,但它们可能无法按预期在每个可能的HTML上运行。