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

在BigQuery中使用正则表达式提取URL路径

BigQuery提取URL路径的解决方案

问题场景

处理以下URL,需要提取域名后的路径部分,去除UTM参数,得到预期结果:

原始URL示例:

URL
https://www.newssite.com/news/biden-rail-strike/12345/UTM=company-Library/
https://www.newssite.com/news/news-about-today-exiting/55690/
https://www.nytimes.com/2022/11/29/us/politics/biden-rail-strike.html
https://www.differentnewssite.com/news/news-about-yesterday-exiting/55690/UTM=facebook
https://www.newssite.com/opinion/opinion-about-today-sad-insightful/578932/

预期提取结果:

Path
news/biden-rail-strike/12345/
news/news-about-today-exiting/55690/
2022/11/29/us/politics/biden-rail-strike.html
news/news-about-yesterday-exiting/55690/
opinion/opinion-about-today-sad-insightful/578932

可行方案

方案1:正则表达式直接提取

通过REGEXP_EXTRACT精准匹配域名后到UTM参数前的内容,同时处理无UTM时的末尾冗余斜杠:

SELECT
  url,
  CASE
    WHEN REGEXP_CONTAINS(url, r'UTM=') THEN REGEXP_EXTRACT(url, r'https?://[^/]+/(.*?)UTM=')
    ELSE RTRIM(REGEXP_EXTRACT(url, r'https?://[^/]+/(.*)'), '/')
  END AS path
FROM
  your_table_name

方案2:结合内置函数与正则替换

先用BigQuery的PARSE_URL提取完整路径,再通过正则去除UTM参数和多余斜杠:

SELECT
  url,
  RTRIM(REGEXP_REPLACE(LTRIM(PARSE_URL(url, 'PATH'), '/'), r'UTM=.*$', ''), '/') AS path
FROM
  your_table_name

结果说明

两种方案都能完全匹配预期需求:

  • 带UTM参数的URL会自动截断到UTM之前的路径,保留原始路径末尾的斜杠
  • 无UTM参数的URL会去除末尾冗余斜杠(如第五个示例)
  • 静态页面类的URL(如纽约时报的链接)完整保留原始路径结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:05:20