使用RegEx从文本中提取带有和不带有自定义URL方案的URL

蒂莫

我正在寻找一种使用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方案(“深层链接”)。不幸的是,这不能很好地扩展。

任何帮助,将不胜感激!

史蒂夫·W

如果我没看错,您想要的是一种通用的方法来检测URL使用的协议,因此您无需维护100个不同协议的列表?

如果是这样,那么用标准字符捕获替换协议列表就可以了。

假如说:

  • URL将始终包含“://”以将协议与位置分开
  • 协议将至少包含2个字符,最多20个字符(尽管您可以根据自己的要求进行调整

那意味着以下应该做的工作

([a-zA-Z]{2,20}):\/\/([\w_-]+(?:(?:\.[\w_-]+)?))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?

https://regex101.com/r/epzXQv/2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有端口和不带方案的URL解析

使用URL打开带有负载的自定义应用

如何使用带有jQuery和自定义url参数的cookie

带有或不带有http和www的URL验证

如何快速加载带有自定义 url 的 webview

带有多个 URL 的 Woocommerce 自定义附属链接

如何在带有自定义 URL 和扩展名的 cakephp 中使用国际化

具有自定义异常的方法/构造函数签名中带有和不带有throw()的C ++

使用带有文本和图像的自定义适配器在列表视图中搜索

使用自定义词典进行带有http url的拼写检查

通过Gmail发送带有自定义方案的链接

带有动态(自定义)文本的AWS出站api调用和带有文本语音转换的电话?

提取带有域名的URL

带有Highcharts的自定义条形图文本

在Android中生成带有自定义文本的图像

带有子项的自定义视图(按钮,编辑文本等)

reStructuredText链接到带有自定义文本的部分

Android自定义后退按钮带有文本

自定义RadioButton框架,内部带有文本

生成带有自定义文本的预览图像?

如何使用 OpenSans 自定义字体在 **Swift 4** 中使文本范围带有下划线和粗体

带有或不带有播放列表的regex youtube url

如何使用IMPORTXML提取带有/不带有ALT和标题标签的图像列表?

从服务启动时不显示带有自定义文本和图标的通知

<li>标签带有flex,自定义项目符号图标和粗体文本

带有自定义文本字体和颜色的微调器

在带有自定义字体的文本视图中设置粗体和斜体样式(以编程方式)

带有自定义按钮文本和多列的外部过滤器

带有图像、文本和添加项目按钮的自定义 ListView