如何从字符串中仅提取版本号

Posted

技术标签:

【中文标题】如何从字符串中仅提取版本号【英文标题】: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

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

【问题讨论】:

【参考方案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)]

【讨论】:

以上是关于如何从字符串中仅提取版本号的主要内容,如果未能解决你的问题,请参考以下文章

如何从repo文件中仅提取已启用的存储库?

从熊猫数据框中仅提取数字和字符串

从日期宏中仅提取年份

如何从 OCR 内容中准确提取电子邮件和单元号字符串文本?

如何从 SQL 中的 URL 字符串中提取 ID 号?

Typescript - 从包含符号的文本中提取字符串[重复]