Regex 序列的POSIX正查找
我现在有一个正则表达式,它匹配所有字符,直到一个由(任意)“XYZ”表示的序列。我在红移上执行它,试图去掉这个序列的一个字符串 我在运行查询时收到一条不明确的错误消息,我使用POSIX正则表达式解析器来获取更多信息。下面是解析器的输出Regex 序列的POSIX正查找,regex,amazon-redshift,Regex,Amazon Redshift,我现在有一个正则表达式,它匹配所有字符,直到一个由(任意)“XYZ”表示的序列。我在红移上执行它,试图去掉这个序列的一个字符串 我在运行查询时收到一条不明确的错误消息,我使用POSIX正则表达式解析器来获取更多信息。下面是解析器的输出 .*?(?=XYZ) 有办法解决这个问题吗?环顾四周,肯定查找似乎与红移语法无关。您可以使用(.*XYZ)实现同样的效果,并获得组1值。红移是否支持捕获组?如果是这样,您可以执行^(.*XYZ)并使用捕获结果。(我不确定文档是否正确,但如果正确,则捕获组和惰性量
.*?(?=XYZ)
有办法解决这个问题吗?环顾四周,肯定查找似乎与红移语法无关。您可以使用
(.*XYZ)实现同样的效果,并获得组1值。红移是否支持捕获组?如果是这样,您可以执行^(.*XYZ)并使用捕获结果。(我不确定文档是否正确,但如果正确,则捕获组和惰性量词*?
似乎都不受支持。)关于拆分部分(col,'XYZ',1)
?如果XYZ是一个文本,这就足够了。在本例中,XYZ多次出现,我试图在第N次出现后获取内容,因此实际的命令是REGEXP_REPLACE('(.*?(?=XYZ)XYZ){N-1}','
当错误消息明确指出它不是Perl时,为什么要标记Perl?您可以通过(.*)实现同样的效果XYZ
并获取组1值。红移是否支持捕获组?如果是这样,您可以执行^(.*XYZ)并使用捕获结果。(我不确定文档是否正确,但如果正确,则捕获组和惰性量词*?
似乎都不受支持。)关于拆分部分(col,'XYZ',1)
?如果XYZ是一个文本,这就足够了。在这个示例中,XYZ多次出现,我试图在第N次出现后获取内容,因此实际的命令是REGEXP_REPLACE('(.*?(?=XYZ)XYZ){N-1}','
当错误消息明确指出它不是Perl时,为什么要标记Perl?
error parsing regexp: invalid or unsupported Perl syntax: `(?=`