与RegExp反转匹配

时间:2010-08-25 19:33:25

标签: regex url yahoo-pipes

我正在雅虎上工作!管道。我有一个RegExp来匹配一个URL。现在,我需要匹配不匹配的以便删除它,以便只有我的URL。我的RegExp是:

[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+

如何反转匹配? (必须通过另一个RegExp完成,YPipes不支持任何其他方式。)

编辑:为了澄清:我有一个字符串,需要获取其中的第一个URL。这就是为什么没有其他工作......

1 个答案:

答案 0 :(得分:0)

Yahoo Pipes支持正则表达式替换(使用String Regex模块)。

然后匹配您想要保留的部分并将其捕获到一个组中。你已经这样做了,虽然你的正则表达式本身有些错误,但这里至少有一个明显的错误得到纠正:

([A-Za-z]+://[A-Za-z0-9_-]+\.[A-Za-z0-9_:%&?/.=-]+)
^          ^            ^
|          |            |
|          |            + lone dashes always at the end of the character class!
|          +--- forward slashes do not need to be escaped             
+--- capturing group 1, contents later accessible through $1

然后用该组的内容替换整个字符串。只需将$1放入“替换为”字段即可。实际上,这会删除您不想保留的所有内容。

由于我不确定你的正则表达式应该做什么,我不能给你一个更好的版本。

作为一般性提示:正则表达式始终只是关于匹配的东西,而且从来没有关于不匹配(即“排除”)的东西。有正则表达式具有排除效果,但即使他们通过匹配实现它。