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 组:年份,19
或 20
后跟任意两位数
/
- 一个 /
字符
((?:0?[1-9]|1[0-2])(?:-(?:0?[1-9]|1[0-2]))?)
- 第 2 组(月份):可选的 0
然后 1
到 9
,或者 1
然后 0
到 2
(00
-12
),然后是可选的 -
和相同的月份模式
(?:/|$)
- /
或字符串结尾。
我正在尝试对我的网站进行分类,但它们的 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 组:年份,19
或20
后跟任意两位数/
- 一个/
字符((?:0?[1-9]|1[0-2])(?:-(?:0?[1-9]|1[0-2]))?)
- 第 2 组(月份):可选的0
然后1
到9
,或者1
然后0
到2
(00
-12
),然后是可选的-
和相同的月份模式(?:/|$)
-/
或字符串结尾。