【问题标题】:How to extract only version number from string如何从字符串中仅提取版本号
【发布时间】:2021-08-11 09:10:23
【问题描述】:

我正在尝试从此文本格式xx.xx.xx.xx 中提取第四个数字,例如(7.0.3.10),所以我使用了这个

  REGEXP_EXTRACT(applicationVersion, r'[^.]*\.[^.]*\.[^.]*\.([^.]*)'

但有时最后一个参数是字符串而不是数字,例如7.0.10.1_chargable,我试图找到一种方法来忽略数字后面的参数,所以我会得到1

 SELECT
      

     REGEXP_EXTRACT(applicationVersion, r'[^.]*\.[^.]*\.[^.]*\.([^.]*)') ,
     applicationVersion,
     max(eventTimestamp)

         FROM
      `datascience.AppEvents`

     group by 1,2 order by 2 desc

我需要进行哪些更改才能获得此结果?

【问题讨论】:

    标签: regex google-bigquery


    【解决方案1】:

    我会使用正则表达式模式\d+\.\d+\.\d+\.(\d+):

    SELECT
        REGEXP_EXTRACT(applicationVersion, r'\d+\.\d+\.\d+\.(\d+)'),
        applicationVersion,
        MAX(eventTimestamp)
    FROM datascience.AppEvents
    GROUP BY 1, 2
    ORDER BY 2 DESC;
    

    【讨论】:

      【解决方案2】:

      你可以使用

      (?:[0-9]+\.){3}([0-9]+)
      

      请参阅regex demo详情

      • (?:[0-9]+\.){3} - 一个或多个数字出现三次,然后是一个点
      • ([0-9]+) - 捕获组 1:一位或多位数字。

      【讨论】:

        【解决方案3】:

        从该文本格式中提取第 4 个数字 xx.xx.xx.xx

        你可以在下面使用

        regexp_extract_all(applicationVersion, r'\d+')[safe_offset(3)]
        

        【讨论】:

          猜你喜欢
          • 2013-05-24
          • 1970-01-01
          • 1970-01-01
          • 2020-03-08
          • 1970-01-01
          • 2019-08-22
          • 1970-01-01
          • 1970-01-01
          • 2021-01-08
          相关资源
          最近更新 更多