Warm tip: This article is reproduced from serverfault.com, please click

其他-BigQuery REGEX取得2个字元之间的文字

(其他 - BigQuery REGEX get text between 2 characters)

发布于 2020-11-30 20:14:31

从这个字符串:

gs://analytics_models_from_g_rdd_ga/9g653798d-7e13-4238-55443-6db72ace9911$$$$events_today.csv

我正在尝试提取此文本:

9g653798d-7e13-4238-55443-6db72ace9911

并在单独的REGEX函数中 events_today

第一个字符串的滚动:

  1. 该字符串将始终以$$结尾。
  2. 该字符串将始终以ga /开头。
  3. 提取的文本长度可以更改。

我缝了几本教程和红色正则表达式参考,但仍然没有成功,我以为解决方案可以,/\\s*(.*?)\\s*$$$$但不是。

通常,要提取2个字符串之间的字符串

Questioner
idan
Viewed
11
Wiktor Stribiżew 2020-12-01 04:51:29

你可以使用

REGEXP_REPLACE(col, r".*ga/([^/$]*)\${4}.*", r"\1")

请参阅regex演示

.*可以在以下方面使用相同但有所简化的模式,因为它将变得多余REGEGEXP_EXTRACT

REGEXP_EXTRACT(col, r"ga/([^/$]*)\${4}")

图案细节:

  • .* -除换行符以外的任何零个或多个字符,并且尽可能多
  • ga/ -ga和一个斜线
  • ([^/$]*)-第1组:除/以外的任何零个或多个字符$
  • \${4}-四个$符号
  • .* -尽可能多的除换行符以外的零个或多个字符。

替换项是第1组反向引用,\1它将整个匹配项替换为该组的内容。