我正在寻找一种使用RegEx从文本中提取URL的方法。关于SF,这里有很多问题和很好的答案,但是我没有找到能够提取自定义方案的URL的RegEx解决方案。
以下是一些我需要从中提取URL的示例:
Text: Send me a message on whatsapp whatsapp://send?text=Hello+World. I will get in touch!
-> Should extract whatsapp://send?text=Hello+World
Text: Some text google.com
-> Should extract google.com
Text: There are many nice people on https://www.stackoverflow.com
-> Should extract https://www.stackoverflow.com
Text: You can send visit my Facebook profile on fb://myhappyprofile.
-> Should extract fb://myhappyprofile
Text: https://www.google.com
-> Should extract https://www.google.com
到目前为止,我发现的解决方案明确提取了以 http:// https:// 或:// 开头的URL。在这些解决方案中,必须在表达式中指定协议。
我得到最多结果的表达式是以下表达式:
(http|ftp|https|whatsapp|fb):\/\/([\w_-]+(?:(?:\.[\w_-]+)?))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?
在这里,我列出了诸如WhatsApp和Facebook之类的应用程序的URL方案(“深层链接”)。 不幸的是,这不能很好地扩展。
对此将提供任何帮助!
答案 0 :(得分:2)
如果我没看错的话,那么您想要的是一种通用的方法来检测URL使用的协议,这样您就无需维护100个不同协议的列表?
如果是这样,那么用标准字符捕获替换协议列表就可以了。
假设:
这意味着以下人员应该做
([a-zA-Z]{2,20}):\/\/([\w_-]+(?:(?:\.[\w_-]+)?))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?