红移/正则表达式(负向前瞻)不起作用

时间:2016-12-07 16:16:28

标签: regex amazon-redshift

当我在redshift上使用负向前瞻(类似(?!abc))时, redshift返回如下错误:

-- Find records that do not start with abc
select * from table_a where column_a ~ '^(?!abc).+$'
  

错误:PG :: InternalError:错误:重复运算符之前的前正则表达式无效。解析正则表达式时出错:' ^(?>>> HERE>>>!abc)。+ $'。 DETAIL:-----------------------------------------------错误:重复运算符之前的前一个正则表达式无效。解析正则表达式时出错:' ^(?>>> HERE>>>!abc)。+ $'。代码:8002上下文:T_regexp_init查询:1039510位置:funcs_expr.cpp:130

看起来Redshift不承认负面前瞻......
有什么方法可以在Redshift上使用它吗?

1 个答案:

答案 0 :(得分:5)

度Acc。对于Amazon Redshift documentation,您可以与~运算符一起使用的正则表达式符合POSIX标准。这意味着没有环视支持,您无法在这些模式中使用(?!...)(?<!...)构造。

如果字符串不以模式开头,您似乎想要匹配字符串。在这种情况下,您可以使用否定正则表达式运算符版本!~

where column_a !~ '^abc'