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

请求分步解析Redshift中提取URL域名的正则表达式

Redshift提取URL域名的正则表达式分步解析

先看整体SQL逻辑:

REPLACE(REGEXP_SUBSTR(url,'//[^/\\\,=\\@\\+]+\\.[^/:;,\\\\\\(\\)]+'),'//','')

先用REGEXP_SUBSTR从url字段里匹配出带//前缀的域名片段,再用REPLACE把开头的//删掉,得到纯域名。

下面分步拆解核心的正则表达式://[^/\\\,=\\@\\+]+\\.[^/:;,\\\\\\(\\)]+

  • 第一部分://
    直接匹配URL里协议(比如http/https)后的双斜杠分隔符,定位域名的起始位置。

  • 第二部分:[^/\\\,=\\@\\+]+

    • [^...]是反向字符集,和你了解的正向字符集[]相反,意思是匹配不在这个集合里的任意单个字符
    • 里面的\\/、\\,、\\=、\\@、\\+都是转义后的特殊字符:因为/、,、=、@、+要么在正则里有特殊含义,要么需要精确匹配,所以用\\转义
    • 末尾的+是量词,表示前面的字符集要匹配至少1次
      合起来就是:匹配一段至少1个字符的内容,这段内容里不能包含/、,、=、@、+,用来抓取域名的主体部分(比如www.example里的www)。
  • 第三部分:\\.
    匹配域名里的点号(比如www.example里的.)。因为.在正则里是通配符(匹配任意单个字符),所以必须用\\转义成普通的点号来精确匹配。

  • 第四部分:[^/:;,\\\\\\(\\)]+

    • 同样是反向字符集搭配+量词
    • 里面的\\/、\\:、\\;、\\,、\\\\、\\(、\\)都是转义后的特殊字符,对应禁止出现的/、:、;、,、\、(、)
      合起来就是:匹配一段至少1个字符的域名后缀(比如example.com里的com),直到遇到上述禁止字符为止。

举个实际例子:如果URL是https://www.example.com/path?param=1,正则会匹配到//www.example.com,再经过REPLACE去掉//,最终得到www.example.com。

内容的提问来源于stack exchange,提问作者macromind

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:10:20