1

我意识到这个问题已经在 Stack Overflow 和整个网络上被问过很多次了,事实上,我刚刚打开了大约 20 个选项卡,并为这个问题提供了明显的解决方案。

问题是每一个答案都说了一些类似的东西

可以使用正则表达式,但这不是一个好主意并且不能可靠地工作,但我不会提供任何替代方案。

所以我的问题是——真的没有可靠、明确的方法可以从文本中提取 URL 吗?

4

3 回答 3

2

正则表达式是非常强大的工具。像大多数强大的工具一样,它们被严重误解,在许多用户手中很危险,并且是某些任务的最佳答案。 匹配字符串中的已知模式就是它们存在的目的。一旦您掌握了良好的 URL 模式,它将始终在其设计的上下文中工作。每个人都回避使用它们的原因是,为特定上下文创建一个好的 URL 模式是一项艰巨的工作。该模式将因执行环境(例如,URL 的操作系统file:)、编程语言和/或使用的库等而异。

对于 HTTP URL 的特定情况,有一个明确的定义,主要是遵守,您可以使用几乎任何语言或库从它构建一个可靠的正则表达式。

于 2012-12-16T15:55:18.867 回答
0

我们真的没有可靠、明确的方法可以从文本中提取 URL 吗?

好吧,字符串格式列表中的任何内容都需要仔细处理异常。也就是说,一旦您进行了处理,它应该可以正常工作。

带有 uri 模式的正则表达式可能会起到类似的作用:

<a href="(?<url>http://.*?)".*>(?<text>.+?)<\/a>

这是一个.NET 正则表达式,因此您可能需要修改它以在您的平台语言上工作。

于 2012-12-15T12:30:33.730 回答
0

如果你想从任何字符串中提取 URL,除了使用 Regex 之外别无选择。事实上 URI Scheme 已定义(请参阅http://en.wikipedia.org/wiki/URI_scheme),如果您了解它的所有方面,正则表达式非常可靠。

于 2012-12-15T12:34:29.667 回答