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

Data Studio计算字段:如何从URL中提取不含子域名的完整域名

解决Data Studio中提取主域名(过滤所有子域名)的正则问题

我来帮你搞定这个域名提取的需求!你想要的是从任意URL里剥离掉协议(http/https)、所有子域名(不止www),只保留主域名+顶级域名(比如把https://www.example.com/pag.html转成example.com),这个需求用Data Studio的REGEXP_EXTRACT完全可以实现,我来给你拆解正确的正则写法和逻辑。

最终可用的公式

先直接给你能达到预期效果的完整公式,和你Google Sheets里的逻辑对齐,还处理了空值情况:

IFNULL(REGEXP_EXTRACT(URL, r'^(?:https?://)?(?:[^/]+\.)?([^/.]+\.[^/?#]+)'), "")

正则逻辑拆解

我把这个正则的每个部分拆解开,方便你理解为什么它能工作:

  • ^(?:https?://)?:匹配开头的http://或https://,?:表示这是非捕获组——意思是我们不需要提取这部分内容,只是跳过它;?表示这部分是可选的(比如有些URL可能没有协议前缀)。
  • (?:[^/]+\.)?:匹配任意形式的子域名(比如www.、blog.、sub.subdomain.),同样用?:设为非捕获组,?表示子域名是可选的(比如直接输入example.com这种没有子域名的URL也能处理)。[^/]+表示匹配除了斜杠之外的任意字符,直到遇到一个点。
  • ([^/.]+\.[^/?#]+):这是核心的捕获组,用来提取我们真正需要的内容:
    • [^/.]+:匹配主域名部分(比如example),排除点和斜杠;
    • \.:匹配主域名和顶级域名之间的点;
    • [^/?#]+:匹配顶级域名(包括多级顶级域名,比如co.uk、org.cn),排除斜杠、问号(URL参数)、哈希(锚点)。

测试各种场景

这个公式能覆盖你遇到的大部分URL情况:

  • 输入https://www.example.com/pag.html → 输出example.com
  • 输入http://blog.test.co.uk/post?param=1 → 输出test.co.uk
  • 输入https://sub.subdomain.example.org → 输出example.org
  • 输入example.com(无协议无路径)→ 输出example.com

为什么你之前的尝试有问题?

咱们来复盘下你之前的两个正则:

  1. REGEXP_EXTRACT(URL, "//(.*?)/"):这个只能提取//和第一个/之间的内容,比如www.example.com,没法剥离掉www这类子域名,而且如果URL没有结尾的/就会匹配失败。
  2. REGEXP_EXTRACT(URL, '^[^.]+.([^.]+)'):这个正则的逻辑是匹配第一个点之前的内容,然后提取第一个点之后的部分,但它只匹配了一个点后的内容,所以会把example.com变成com,完全丢失了主域名,而且遇到多级子域名或者多级顶级域名就彻底失效了。

额外优化:处理带端口的URL

如果你的URL里有端口号(比如https://www.example.com:8080/path),可以稍微调整正则,把端口部分也排除:

IFNULL(REGEXP_EXTRACT(URL, r'^(?:https?://)?(?:[^/:]+\.)?([^/.]+\.[^/?#]+)'), "")

这里只是把[^/]改成了[^/:],避免把端口号(比如:8080)包含进子域名的匹配里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:02:47