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

BigQuery/SQL 如何从右数第二个点分割字符串提取核心域名

域名反向拆分提取目标域名实现方案

核心逻辑是从右往左匹配分隔符取对应位数的域名段,针对有.co.za这类特殊二级国别后缀的场景,优先匹配特殊后缀再做截取,具体实现如下:

数据库SQL实现(以MySQL为例,其他数据库函数逻辑一致仅语法略有差异)

用MySQL内置的SUBSTRING_INDEX函数即可实现反向截取,该函数第三个参数为负数时,会从右往左数第N个点之后的所有内容:

SELECT 
    CASE
        -- 优先匹配需要保留3段的特殊后缀
        WHEN website LIKE '%.co.za' THEN SUBSTRING_INDEX(website, '.', -3)
        -- 普通通用域名保留最后2段即可
        ELSE SUBSTRING_INDEX(website, '.', -2)
    END AS website
FROM 你的数据表名;

如果后续有其他特殊后缀(比如.co.uk、.com.hk等),直接在CASE WHEN中新增对应判断条件即可。

Python代码实现

如果是用Python批量处理该类数据,可以参考以下代码:

# 提前定义需要保留3段的特殊后缀列表
special_suffix_list = [".co.za", ".co.uk", ".com.hk"]
original_domains = ["www.abc.google.com", "www.bcd.google.com", "wwww.efd.google.co.za"]
processed_domains = []

for domain in original_domains:
    processed = None
    for suffix in special_suffix_list:
        if domain.endswith(suffix):
            # 匹配到特殊后缀,取分割后的最后3段
            processed = ".".join(domain.split(".")[-3:])
            break
    if not processed:
        # 普通通用域名,取分割后的最后2段
        processed = ".".join(domain.split(".")[-2:])
    processed_domains.append(processed)

# 输出结果:['google.com', 'google.com', 'google.co.za']
print(processed_domains)

如果你的场景涉及大量不同类型的顶级域名、国别域名,可直接基于公共后缀列表的对应解析库做处理,不需要手动维护后缀列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 18:12:01