REGEXP_EXTRACT 要在 Google Data Studio 中提取年份或月份的特定字符串

REGEXP_EXTRACT specific string to extract year or month in Google Data Studio

我正在尝试对我的网站进行分类,但它们的 uri 结构并不总是相同,因此我想在一列中提取年份,在第二列中提取月份。

结果应该是年月分开的 columns/fields:

url year months
/www.site.com/path1/resort/2021/02/sitename 2021 02
/www.site.com/path1/2021/02 2021 02
/www.site.com/path1/2020/11-12 2020 11-12
/www.site.com/path1/2020/07-08 2020 07-08
/www.site.com/path1/resort/ null null

以下年份的正则表达式有效:

REGEXP_EXTRACT(url,'([0-9]{4})') >> result: 2020, null etc.

但是月份的正则表达式并没有只提取月份:

REGEXP_EXTRACT(url,'((?:[0-9]{4}/)[0-9]+.?[0-9]*/)') >> result: 2020/11-12/,2021/02/, null etc.

提前感谢您的帮助。

你可以使用

(?:^|/)((?:19|20)[0-9]{2})/((?:0?[1-9]|1[0-2])(?:-(?:0?[1-9]|1[0-2]))?)(?:/|$)

参见regex demo

如果每场比赛只需要捕获一次,请将捕获组替换为非捕获组,或删除多余的模式:

REGEXP_EXTRACT(col_url, '(?:^|/)((?:19|20)[0-9]{2})(?:/|$)') as Year
REGEXP_EXTRACT(col_url, '(?:^|/)((?:0?[1-9]|1[0-2])(?:-(?:0?[1-9]|1[0-2]))?)(?:/|$)') as Month

详情:

  • (?:^|/) - 字符串开始或 /
  • ((?:19|20)[0-9]{2}) - 第 1 组:年份,1920 后跟任意两位数
  • / - 一个 / 字符
  • ((?:0?[1-9]|1[0-2])(?:-(?:0?[1-9]|1[0-2]))?) - 第 2 组(月份):可选的 0 然后 19,或者 1 然后 02 (00-12),然后是可选的 - 和相同的月份模式
  • (?:/|$) - / 或字符串结尾。