【问题标题】:REGEXP_EXTRACT specific string to extract year or month in Google Data StudioREGEXP_EXTRACT 用于在 Google Data Studio 中提取年份或月份的特定字符串
【发布时间】:2021-08-02 14:35:13
【问题描述】:

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

结果应该是单独的列/字段中的年份和月份:

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.

提前感谢您的帮助。

【问题讨论】:

    标签: regex google-data-studio re2


    【解决方案1】:

    你可以使用

    (?:^|/)((?: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,然后是 0200-12),然后- 和同一月份模式的可选出现
    • (?:/|$) - / 或字符串结尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-04
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      相关资源
      最近更新 更多