【问题标题】:Using Regex in Yahoo pipes to "clean" RSS feeds在 Yahoo 管道中使用 Regex 来“清理”RSS 提要
【发布时间】:2010-08-03 23:27:03
【问题描述】:
在创建从 rss 提要中删除某些元素的 Yahoo Pipe 时需要一些帮助。
澄清:我会在 Yahoo Pipes 上使用正则表达式代码。我认为正则表达式语法是通用的?
我已将问题分解为一些子问题:
删除/删除特定 html 标签(有自己的类)的正则表达式是什么?
内容
如何从链接图像中去除链接但保留图像标记?
如何将顺序类添加到提要项中的所有链接?
如果单个提要项中有 5 个链接,它们将被赋予类:link001、link002、link003、link004、link005...
由于新帐户限制,代码示例可以在这里找到:
Using Regex in Yahoo pipes
正则表达式不完全是我的强项...所以任何帮助将不胜感激!
非常感谢!
【问题讨论】:
标签:
regex
rss
feed
yahoo-pipes
【解决方案1】:
正则表达式语法当然不是通用的。见我的regex flavor comparison。不幸的是,Yahoo Pipes 文档没有说明他们使用什么正则表达式风格。这些示例看起来像 Perl 风格的正则表达式,所以我将使用它。
要删除具有特定类属性(例如 someclass)的特定 HTML 标记(例如 span),请搜索:
(?si)<span[^<>]*class=["']?someclass["']?[^<>]*>(.*?)</span>
并替换为:
$1
如果您尝试删除的span 标记包含嵌套的span 标记,则上述正则表达式将失败。
要删除任何a 标记作为其内容中的第一件事的标记,请搜索:
(?si)<a[^<>]*>(<img.*?)</a>
并替换为:
$1
您问题中的第三项不能仅使用正则表达式来完成。您需要一个工具来增加替换中的数字。我不知道 Yahoo Pipes 是否支持类似的东西。你真的不需要正则表达式。只需搜索文本<a 并替换为<a class="link001"
当然,所有关于使用正则表达式操作 HTML/XML 的警告都适用。正则表达式适用于您提供的示例,但它们可能无法按预期适用于所有可能的 HTML。