【发布时间】:2020-06-25 00:28:22
【问题描述】:
我有一个我无法控制的源,我想过滤掉所有包含某些字符的字符串。 例如其中:
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?
【问题讨论】:
-
试试
^(\*|[0-9]+(\.[0-9]+){0,2}(\.\*)?)$。它符合 POSIX ERE。 -
当你说 POSIX 时,你还应该澄清它是 BRE 还是 ERE 语法。
-
@WiktorStribiżew:抱歉,这似乎与任何字符串都不匹配
-
如果相关文档是here,即使
\d也可以,写成\\d就行了。'^(\\*|\\d+(\\.\\d+){0,2}(\\.\\*)?)$' -
那么,成功了吗?
标签: regex amazon-redshift posix regex-group