首页 > 解决方案 > 用于在字符中获取字符串的正则表达式,第一个字符集在 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/在提取中返回。

任何人都知道如何解决这个问题?

标签: regexprestoamazon-athena

解决方案


我会REGEXP_REPLACE在这里使用:

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

请参阅正则表达式演示

详情

  • ^- 字符串的开始
  • (?:[^/]*/)?- 一个可选的序列,匹配任何零个或多个字符,除了 a/和一个/字符
  • ([^^]*)- 捕获组 1(从替换模式中引用$1):除 a 之外的任何零个或多个字符^
  • \^- 文字^字符
  • .*- 字符串的其余部分到最后。

推荐阅读