String 如何从字符串中提取URL?(任何语言)
我意识到这个问题已经在堆栈溢出和网络上被问过很多次了,事实上,我刚刚打开了大约20个标签页,上面有明显的解决方案 问题是,每一个答案都是按照 您可以使用Regex,但这不是一个好主意,也不能可靠地工作,但我不会提供任何替代方案 所以我的问题是,真的没有可靠的、确定的方法可以从文本中提取URL吗 真的没有可靠的、确定的方法从文本中提取URL吗 嗯,字符串格式列表中的任何内容都需要仔细的异常处理。也就是说,一旦处理到位,它应该可以正常工作 “可能会做的事”可能看起来类似于:String 如何从字符串中提取URL?(任何语言),string,url,language-agnostic,String,Url,Language Agnostic,我意识到这个问题已经在堆栈溢出和网络上被问过很多次了,事实上,我刚刚打开了大约20个标签页,上面有明显的解决方案 问题是,每一个答案都是按照 您可以使用Regex,但这不是一个好主意,也不能可靠地工作,但我不会提供任何替代方案 所以我的问题是,真的没有可靠的、确定的方法可以从文本中提取URL吗 真的没有可靠的、确定的方法从文本中提取URL吗 嗯,字符串格式列表中的任何内容都需要仔细的异常处理。也就是说,一旦处理到位,它应该可以正常工作 “可能会做的事”可能看起来类似于: <a href="
<a href="(?<url>http://.*?)".*>(?<text>.+?)<\/a>
(?。+?)
这是一个.NET regexp,所以您可能需要修改它才能在您的平台语言上工作。如果您想从任何字符串中提取URL,除了使用Regex,别无选择。
事实上,URI模式已经定义(请参阅),如果您仔细研究了它的所有方面,regex是非常可靠的。正则表达式是非常强大的工具。与大多数功能强大的工具一样,它们被严重误解,在许多用户手中都很危险,并且是某些任务的最佳答案。匹配字符串中的已知模式是它们存在的目的。一旦你有了一个好的URL模式,它将在它设计的上下文中一直工作。每个人都回避使用它们的原因是,为特定上下文创建一个好的URL模式是一项困难的工作。模式会因执行环境(例如
文件的操作系统:
URL)、所用编程语言和/或库等而异
对于HTTP URL的特定情况,有一个基本上是遵循的,您可以使用几乎任何语言或库从中构建可靠的正则表达式。这适用于html中的标记链接,OP要求任何字符串。我刚刚添加了答案的其余部分。我认为解析过程首先需要一个好的异常处理。看看你引用的:他想从文本中提取URL,这可能是任何东西。除了正则表达式,没有其他优雅的解决方案。。。。。