从 Bigquery 中的 URL 中提取字符串
Posted
技术标签:
【中文标题】从 Bigquery 中的 URL 中提取字符串【英文标题】:Extract String from URL in Bigquery 【发布时间】:2020-09-25 09:14:31 【问题描述】:我有几个 1.000 个 URL,想从 URL 参数中提取一些值。以下是数据库中的一些示例:
["//xxx.com/se/something?SE_ifmobile:MBifnotmobile:DT_A_B_C_D_E_F_G_H"]
["//www.xxx.com/se/car?p_color_car=White?SE_ifmobile:MBifnotmobile:DT_A_B_C_D_E_F_G_H"]
我想提取 SE |一个 |乙| C | D | E | F |克| H
我已经用 REGEXP_EXTRACT 试过了
REGEXP_EXTRACT_ALL(Url,r'(?:\?|&)(?:([^_]+)_(?:[^&]*))') as Country
问题是因为我有两个“?”结果为第一个 url 返回 SE,为第二个 url 返回 p。我怎样才能在一个正则表达式中解决这个问题,这样我才能得到第二个网址的 p 但实际 SE。
【问题讨论】:
【参考方案1】:你可以使用
[?&]([^_]+)_[^&?]*$
请参阅regex demo。详情:
[?&]
- ?
或 &
字符
([^_]+)
- 第 1 组(实际输出字符串):除 _
之外的一个或多个字符
_
- 一个 _
字符
[^&?]*
- 零个或多个 &
或 ?
字符
$
- 字符串结束。
【讨论】:
REGEXP_EXTRACT_ALL(Url, r'[?&]([^_]+)_[^&?]*$ as URL 这是这个想法吗?我收到关于未闭合字符串文字的错误。跨度> @user3052850 当然,关闭它,REGEXP_EXTRACT_ALL(Url, r'[?&]([^_]+)_[^&?]*$')
以上是关于从 Bigquery 中的 URL 中提取字符串的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery REGEXP_EXTRACT from URL - 提取参数值