如何在多个用例中绕过bigquery上的一个正则表达式捕获组



我正在使用GBQ尝试创建一个regexp来提取"tn"值从下面的URL示例中获取。"tn"键可以在URL中的任何位置,在"事件"之后。在技术上也可以是任何值。然而,我使用的regexp(如下所示)使用了两个组,而GBQ只允许一个组,所以我正在寻求帮助,看看如何才能使它

我还尝试分割下面的URL,试图从数组中提取值,但无法找出从那里去的地方。我觉得拆分它可能更容易,但我想确保如果我打开它(理想情况下我不需要打开它),它最终不会复制数据。

https://google.com/d/track/event?upid=12345& url = https://www.mywebsite.com/&tn = o_rnpp4126& val = 100.00, cache_buster = 15, ps = 2

https://google.com/d/track/event?upid=12345& url = https://www.mywebsite.com/&val = 100.00, cache_buster = 15, ps = 2, tn = o_rnpp4126

tn=(.+?)(&|$)
select
split(split('https://google.com/d/track/event?upid=12345&url=https://www.mywebsite.com/&val=100.00&cache_buster=15&ps=2&tn=o_rnpp4126','event?')[ordinal(2)],'&')

要匹配直到下一个&或没有第二组的行尾的所有内容,(我假设没有查找)您可以简单地使用tn=([^&]+)

遇到&时自动停止。

同样,为了避免匹配类似smtn=value的东西,您可以使用btn=([^&]+)。它使用词边界b来排除以tn结尾的词的匹配。


或者您可以使用非捕获组:tn=(.+?)(?:&|$)

相关内容

  • 没有找到相关文章

最新更新