提取域名表单URL使用Mysql版本8中的REGEXP_REPLACE

时间:2018-06-01 17:43:48

标签: mysql sql regex

我使用的是Server version: 8.0.11 MySQL Community Server - GPL的最新版本。 Download link

表格结构为web_url < id, url >

网址列中的示例数据。

www.google.com

www.yahoo.com

如何使用该功能仅提取googleyahoo的域名 REGEXP_REPLACE。所以它的意思是替换www..com部分替换为空格或''。如果您有任何其他解决方案,那么欢迎您。

我要么错过了一些。所以帮忙。

我编写了正则表达式,但没有在查询中正确使用它。请提供查询基础答案。

我的查询

select REGEXP_REPLACE(url,'^(www.)[a-zA-z0-9]*(.[a-zA-Z]{3})(\/[a-zA-Z09-]*)*','') from web_url;

到目前为止,我完成了这个查询。

到目前为止,我这样做可能是有人得到帮助 完成此查询以测试是否正在进行比较。 请忽略最后两行,因为它们仅用于测试regexp_like功能

select regexp_like(url,'^(www.)(.*)(.com)$') from web_url;

enter image description here

1 个答案:

答案 0 :(得分:-1)

如果url具有误导性并且实际上是FQDN,那么评论提示,

reverse(regexp_replace(reverse(regexp_replace(url, '\\.[^\\.]*\\.?$', '')), '\\..*', ''))

应该给你右边的第二个标签(如果末尾有可选的空标签,则为第三个标签),这似乎是你想要的。

reverse()是必要的,因为我们不知道字符串中有多少个点。由于我们删除了最后一个(或最后两个)标签后的reverse(),我们只需从第一个点上删除。

如果有regexp_replace()的捕获组会更容易,但我在文档中没有找到任何相关内容。如果我错过了那个,请评论并指出我。