我只成功提取了我使用的网站列表的 TLD
REGEXP_EXTRACT(Domain_name, r'(\.[^.:]*)]\.?:?[0-9]*$') AS web_tld
示例:
我有
www.example1.abc.com
www.example2.efg.123.net
我想要结果
子域
example1
efg
域名
abc
123
顶级域名
.com
.net
编辑: 我的查询遇到错误 “必须指定一个捕获组” 当我使用 (.?([^.:]+).([^.:]+).([^.:]+):?[0-9]*$) 作为正则表达式
SELECT
REGEXP_EXTRACT(Domain, r'(\.?([^.:]+)\.([^.:]+)\.([^.:]+):?[0-9]*$)'),
FROM [weblist.domain]
ORDER BY 1
LIMIT 250;
最佳答案
由于您只能使用一个捕获组,因此我认为您实际上可以使用 3 个单独的正则表达式来获取您想要的值:
SELECT
REGEXP_EXTRACT(Domain, r'([^.:]+):?[0-9]*$'),
REGEXP_EXTRACT(Domain, r'([^.:]+).[^.:]+:?[0-9]*$'),
REGEXP_EXTRACT(Domain, r'([^.:]+).[^.:]+.[^.:]+:?[0-9]*$')
FROM [weblist.domain]
ORDER BY 1
LIMIT 250;
关于sql - 使用 REGEXP_EXTRACT 获取域和子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21273301/