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

在BigQuery中使用Regexp_extract从URL提取category后的数字字符串

在BigQuery中提取URL里/category/后的数字字符串

首先,咱们先看看你之前写的正则哪里出问题了:
[^category/]+/([^/]+)/
这里的[^category/]+是一个否定字符集,它会匹配任何不包含c、a、t、e、g、o、r、y和/的字符,这完全不是你想要的逻辑——你需要的是先精准匹配到/category/这个固定片段,而不是排除这些字符。

正确的正则表达式写法

要实现通用提取,我们可以先定位到/category/,然后捕获它后面直到下一个/的所有数字字符串。在BigQuery的REGEXP_EXTRACT里,可以这样写:

REGEXP_EXTRACT(page_path, r'/category/([0-9]+)/')

如果要兼容数字后面直接是URL结尾的情况(比如/category/12345这种格式),可以调整成匹配到/或者字符串结尾:

REGEXP_EXTRACT(page_path, r'/category/([0-9]+)(?:/|$)')

正则逻辑解释

  • r'/category/':精准匹配/category/这个固定片段,r表示原始字符串,避免转义问题
  • ([0-9]+):捕获1个或多个数字,这就是我们要提取的目标内容
  • (?:/|$):非捕获组,匹配后面的/或者字符串结尾,确保即使数字是URL最后一部分也能被正确提取

测试你的示例URL

用你给出的几个测试URL验证,结果完全符合预期:

  • /cz/category/79478/productname → 提取出79478
  • https://www.store.net/de/category/49448/productname → 提取出49448
  • https://www.store.net/category/62448/productname → 提取出62448
  • /category/79455/productname → 提取出79455

额外提示

如果你不确定目标内容是否全为数字,也可以用([^/]+)代替([0-9]+),这样能捕获/category/之后到下一个/的任意字符串,但根据你的需求,用[0-9]+会更精准,避免捕获意外内容。

内容的提问来源于stack exchange,提问作者Marcin Stańczak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:17:27