regex Redshift中的正则表达式,返回字符串中“at”之前的所有单词

k4emjkb1  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(114)

在redshift中使用REGEX_SUBSTR(),我想搜索一个字符串,并提取字符串中“at”之前的所有单词。
我在regex tester上测试了[^.]*(?=\sat),它工作正常。
但是在Redshift中我不断地得到正则表达式无法解释的错误。
我试过使用双反斜杠(\\s),但也没有成功。由于某些原因,在正向前瞻Assert中,Redshift无法识别任何转义字符。

error:  Invalid preceding regular expression prior to repetition operator.  The error occurred while parsing the regular expression: '[^.]*(?>>>HERE>>>=\sat)'.
  code:      8002
  context:   T_regexp_init
  query:     0
  location:  sql_regex_funcs.hpp:175

在一个完美的世界里

SELECT regexp_substr('withdrawal from Credit Union at main avenue', '[^.]*(?=\\sat)')

将返回 * 从信用社提款 *

yrdbyhpb

yrdbyhpb1#

你可以用

SELECT regexp_substr('withdrawal from Credit Union at main avenue', '([^.]*)\\sat', 1, 1, 'e')

这里

  • ([^.]*)\sat尽可能多地匹配除.以外的零个或多个字符,最多匹配空格和at子字符串
  • 1, 1, 'e'意味着搜索从输入字符串中的第一个字符开始,第一个出现的字符将被返回,返回的子字符串将是第一个捕获组值,即与第一个也是唯一一个带括号的正则表达式部分([^.]*)匹配的值。

相关问题