【问题标题】:Regexp_extract from URLs as strings (SQL BigQuery)将 URL 中的 Regexp_extract 提取为字符串 (SQL BigQuery)
【发布时间】:2022-02-20 01:39:02
【问题描述】:

我试图从多个 URL 中提取一个字符串,这些 URL 都有一个共同点,即使它们的构建方式不同。让我举几个例子:

/cz/category/79478/productname
/https://www.store.net/de/category/49448/productname
/https://www.store.net/category/62448/productname
/category/79455/productname

我正在使用 BigQuery,并且可以为个别示例编写 Regexp_extract 子句,但是,我正在寻找一种在 category/ 之后提取数字(作为字符串)的方法,(79478从第一个网址)。所有地址都有/category/ 的共同部分,所以从我的角度来看应该是可行的。

这是我一直在尝试使用的表达方式:

regexp_extract(page_path, '[^category/]+/([^/]+)/')

但它不起作用。知道我在这里做错了什么吗?

【问题讨论】:

  • 原来可以,谢谢:)

标签: sql google-bigquery


【解决方案1】:

对领先的/category/ 使用非捕获组?

regexp_extract(page_path, '(?:/category/)([^/]+)')

演示:https://regex101.com/r/WSIT77/1

【讨论】:

    【解决方案2】:

    考虑以下方法

    select page_path, regexp_extract(page_path, r'/category/(\d+)/') number
    from your_table    
    

    如果应用于您问题中的样本数据 - 输出是

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2023-02-02
      • 1970-01-01
      • 2021-12-29
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多