使用Impala regexp_like

我正在尝试提出一种正则表达式模式,该模式将与Impala中的regexp_like一起使用,并将匹配十进制值(最多十个数字,后跟一个十进制,然后是一个或多个数字)。

我有一个可在.NET("^-?\d{1,10}\.\d+$")中工作的模式,但这不适用于regexp_like。

我已经在Impala("^-?[0-9]{1,10}\.[0-9]+$")中尝试过类似的方法,但是对于整数,它始终返回true。为什么不要求小数点存在?

一些预期的方案结果:

0 = False
0. = False
.5 = False
0.1 = True
123456 = False
-123456 = False
123456.2 = True
-123456.2 = True
Test = False

我想使其更加复杂,并禁止以多个零开头的数字,但我什至不能要求它使用小数点。

liutihj456 回答:使用Impala regexp_like

您的正则表达式仍匹配整数,因为字符串文字中A a = (A) b 之前的\消失了,并且d保留并匹配了字符串中的任何字符。

请参见Impala REGEXP_LIKE documentation

因为impala-shell解释器将.字符用于 转义,使用\代表正则表达式转义字符 在您通过impala-shell提交的任何正则表达式中。您 可能更喜欢使用等效的字符类名称,例如 \\而不是[[:digit:]],而您必须以\d的形式转义。

因此,您可以使用

\\d
本文链接:https://www.f2er.com/1310187.html

大家都在问