如何从字符串中提取URL? (任何语言)

时间:2012-12-15 12:25:54

标签: string url language-agnostic

我意识到Stack Overflow和整个网络已经多次询问过这个问题,事实上,我现在有大约20个标签可以解决这个问题。

事情是每一个答案都说

  

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

所以我的问题是 - 我们是否真的没有可靠,明确的方式从文本中提取网址?

3 个答案:

答案 0 :(得分:2)

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

对于HTTP URL的特定情况,主要遵循clear definition,您可以使用几乎任何语言或库构建可靠的正则表达式。

答案 1 :(得分:0)

  

我们是否真的没有可靠,明确的方式从文本中提取网址?

嗯,字符串格式列表中的任何内容都需要仔细处理异常。也就是说,一旦你有了这样的处理,它应该工作正常。

regexp with a uri schema可能看起来类似于:

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

这是 .NET正则表达式,因此您可能需要修改它以使用您的平台语言。

答案 2 :(得分:0)

如果要从任何字符串中提取URL,除了使用Regex之外别无选择。 实际上URI方案是定义的(参见http://en.wikipedia.org/wiki/URI_scheme),如果你仔细研究它的所有方面,正则表达式是非常可靠的。