当前位置: 首页 > 面试题库 >

从字符串中提取URL

施飞昂
2023-03-14
问题内容

我正在尝试找到一种可靠的解决方案,以从字符串中提取URL。我有一个站点,用户可以在其中回答问题,并且可以在源框中输入他们的信息源,并允许他们输入网址。我想提取该URL并使其成为超链接。类似于Yahoo
Answers的操作方式。

有谁知道可以做到这一点的可靠解决方案?

我发现的所有解决方案都适用于某些URL,但不适用于其他URL。

谢谢


问题答案:

约翰·格鲁伯(John
Gruber)花了很多时间完善用于链接检测的“一个正则表达式来统治所有人”。使用preg_replace()如在其它的答案中提到,使用以下正则表达式应该是最精确的一个,如果不是最准确的,用于检测链接方法:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

如果只想匹配HTTP / HTTPS:

(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))


 类似资料:
  • 我有以下字符串 从上面,我需要提取下面的文字 第一个数字和文本之间总是有一个空格,所以2129和This is page1之间有一个空格。有时第一个数字被省略,就像2129不见了。文本和下一个数字之间总是有一个空格,所以在This is a Page1和6754001之间有一个空格,有时可能有两个空格。我只需要提取这些线这些线总是从空格开始,所以它可以 它们的后面总是有一个空格,有时是一个空格,有

  • 所谓字符串,指的就是字符的序列或者“串”。我们要在字符串上执行的第一个操作是提取所有字符中的一个。C++使用方括号([和])执行该操作: apstring fruit = "banana"; char letter = fruit[1]; cout << letter << endl; 表达式fruit[1]表明我们要从字符串变量fruit中取得编号为1的字符,并将结果保存在字符变量letter

  • 问题内容: 我想从包含数字和字母的字符串中提取数字: 我想在这里获取号码或任何其他号码。 问题答案:

  • 我想从url字符串中提取子字符串。这是url: 我想开始从id中提取= 直到破折号(-),然后提取剩余的子字符串 请注意,确切的域不是上面的域,这只是一个示例。 有什么想法吗?我非常感谢你的帮助。谢谢 更新: 这就是我到目前为止所做的: 但它只是公开了/pi。

  • 问题内容: 我在JavaScript中有一个字符串,例如“#box2”,我只想从中获得“ 2”。 尝试过: 它仍然在警报中返回#box2,我该如何使其正常工作? 它需要容纳末尾附加的任何长度的数字。 问题答案: 对于此特定示例, 在一般情况下: 由于这个答案由于某种原因而受到欢迎,因此有一个好处:正则表达式生成器。

  • 我需要的信息,如果以粗体格式如上所见,即 代码:PF56S55yy收到金额:6,495.00来自:担保信托银行有限公司910201日期:5/6/21时间:10:07