首页 > 解决方案 > 版本字符串的 POSIX 正则表达式

问题描述

我有一个我无法控制的来源,我想过滤掉所有包含一些字符的字符串。例如在这些中:

9
8.1.0
5.0
9.0
5.1
8.0.0
7.0 (cdfsdsdsd)
5.0.2
8
7.0.1
7.1
6.0
7.0
Over 32323
7.0 rdx K9 bnsm
9.2.3
8.oo
pp
unknown
8.0_vgfe10051988
6.0.1
8.0.0-derv10051988
9.1
9.0.0
8.0.1
7.0_xccv10051988
7.1.3
10.0
7.0.X.1.C
8.0.0_vged10051988
4.4.4
7.1.2
7.0 [NKL 24 | ABC]
8.1
7.1.1
5.1.1
7.0_Jgrd10051988
9.XXX
9.0.1
8.0
5.0.1
8.1.1
10

其中我只需要那些只有数字和 .

9
8.1.0
5.0
9.0
5.1
8.0.0
5.0.2
8
7.0.1
7.1
6.0
7.0
9.2.3
6.0.1
9.1
9.0.0
8.0.1
7.1.3
10.0
4.4.4
7.1.2
8.1
7.1.1
5.1.1
9.0.1
8.0
5.0.1
8.1.1
10

我尝试了很多正则表达式,但似乎没有什么是通用的,这个正则表达式也给出了[0-9]*.?[0-9]字符串。我得到的工作是^(\*|\d+(\.\d+){0,2}(\.\*)?)$,但这不是 POSIX。

如何获得也适用于 Redshift 的 POSIX?

标签: regexamazon-redshiftposixregex-group

解决方案


通过查看 Amazon 文档,Redshift 似乎支持 POSIX ERE。那你试试:

^[[:digit:]]+(\.[[:digit:]]+)*$

推荐阅读