0

我目前正在使用 Yahoo! 的管道。管道。我有一个正则表达式来匹配一个 URL。现在,我需要匹配不匹配的才能删除它,这样就只有我的 URL。我的正则表达式是:

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

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

编辑:澄清:我有一个字符串,需要在其中获取第一个 URL。这就是为什么其他方法都不起作用的原因……</p>

4

1 回答 1

0

Yahoo Pipes 支持正则表达式替换(使用字符串正则表达式模块)。

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

([A-Za-z]+://[A-Za-z0-9_-]+\.[A-Za-z0-9_:%&?/.=-]+)
^ ^ ^
| | |
| | + 单独的破折号总是在角色类的末尾!
| +--- 正斜杠不需要转义             
+--- 捕获组 1,稍后通过 $1 访问内容

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

由于我不确定您的正则表达式实际上应该做什么,因此我无法为您提供更好的版本。

作为一般提示:正则表达式始终且仅与匹配的东西有关,而永远不会与不匹配(即“排除”)的东西有关。有些正则表达式具有排除效果,但即使它们是通过匹配来实现的。

于 2010-08-25T20:15:58.267 回答