You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在MySQL 8.0.11中使用REGEXP_REPLACE提取域名的技术问询

解决MySQL中提取核心域名的问题

针对你在MySQL 8.0.11中提取www.google.com、www.yahoo.com这类URL里核心域名(google、yahoo)的需求,我给你几个靠谱的解决方案,包括修正后的正则写法和更简单的字符串函数方法:

方法一:修正REGEXP_REPLACE正则表达式

你之前的正则问题在于把整个匹配的内容都替换成了空字符串,所以结果不对。我们可以换两种思路来写:

思路1:直接替换掉前后多余部分

这个写法会匹配并移除开头的www.和结尾的.com,适合只处理这类格式的URL:

SELECT REGEXP_REPLACE(url, '^www\\.|\\.com$', '') AS core_domain 
FROM web_url;
  • ^www\\.:匹配字符串开头的www.(注意MySQL正则里.需要转义成\\.)
  • \\.com$:匹配字符串结尾的.com
  • |:表示“或”的逻辑,把这两部分都替换为空,剩下的就是核心域名

思路2:捕获中间核心部分(更严谨)

如果想只匹配www.xxx.com这种完整格式的URL,避免其他格式被误处理,可以用分组捕获中间的核心内容:

SELECT REGEXP_REPLACE(url, '^www\\.(.*)\\.com$', '$1') AS core_domain 
FROM web_url;
  • (.*):捕获www.和.com之间的所有内容
  • $1:引用第一个分组捕获到的内容,也就是我们要的核心域名

如果之后需要支持.net、.org这类其他后缀,可以扩展正则:

SELECT REGEXP_REPLACE(url, '^www\\.(.*)\\.(com|net|org)$', '$1') AS core_domain 
FROM web_url;

方法二:用字符串函数替代正则(更高效)

对于你这种固定格式的URL,用SUBSTRING_INDEX组合操作会比正则更简单高效:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(url, '.', 2), '.', -1) AS core_domain 
FROM web_url;
  • 第一步SUBSTRING_INDEX(url, '.', 2):把URL按.分割,取前2部分,得到www.google
  • 第二步SUBSTRING_INDEX(..., '.', -1):把上面的结果再按.分割,取最后1部分,就得到google

测试验证

以上几种方法,对于你的样本数据www.google.com和www.yahoo.com,都会正确返回google和yahoo,你可以根据自己的实际需求选择合适的方案。

内容的提问来源于stack exchange,提问作者Er. Amit Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:06:26