用于在字符中获取字符串的正则表达式,第一个字符集在 Presto/Athena 中可选

Regex for getting a string within characters, with first character set optional in Presto/Athena

我整天都在为这个问题苦思冥想。我让它在各种在线正则表达式工具中工作,但每当我在查询中使用它时,结果都是错误的。

我的数据库中有这样的数据:

AMAZON PAYMENTS EUROPE S.C.A.
1/asdfL GE#EFRDA^9212 GRIFF
Frau HUSEL G^9212 GRIFF

我想提取 1/^ 中存在的文本。像这样:

AMAZON PAYMENTS EUROPE S.C.A.
asdfL GE#EFRDA
Frau HUSEL G

我尝试了很多变体,它们都在线工作:

但是当我 运行 在 AWS 中查询时,我总是在提取中得到 1/

有人知道如何解决这个问题吗?

我会在这里使用 REGEXP_REPLACE:

regexp_replace([column], '^(?:[^/]*/)?([^^]*)\^.*', '')

参见regex demo

详情:

  • ^ - 字符串开头
  • (?:[^/]*/)? - 可选序列匹配除 / 之外的任何零个或多个字符,然后是 / 字符
  • ([^^]*) - 捕获第 1 组(从 </code> 的替换模式中引用):除 <code>^
  • 之外的任何零个或多个字符
  • \^ - 文字 ^ 字符
  • .* - 字符串的其余部分到末尾。