如何从字符串中仅提取版本号
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)]
【讨论】:
以上是关于如何从字符串中仅提取版本号的主要内容,如果未能解决你的问题,请参考以下文章