AWS 雅典 regexp_extract

AWS Athens regexp_extract

我正在尝试提取最后一个“/”和“_”字符之间的字符串 'c://abcd /abcdef/0012wetr_1234567890.csv' 的一部分。

0012wetr

我能够提取最后一个“/”字符后的所有内容

select regexp_extract('c://abcd /abcdef/0012wetr_1234567890.csv', '([^/]*)$');

0012wetr_1234567890.csv

不幸的是,我卡住了,不知道如何进一步拆分它。

您的帮助将不胜感激。干杯,A.

也许这有点矫枉过正,但我​​设法使用下一个前瞻组合获得了所需的结果 - (?!\/)[^\/]+(?=_):

select regexp_extract('c://abcd /abcdef/0012wetr_1234567890.csv', '(?!\/)[^\/]+(?=_)');

输出:

_col0
0012wetr

regex101.com

您可以使用 REGEXP_REPLACE 方法:

REGEXP_REPLACE('c://abcd /abcdef/0012wetr_1234567890.csv', '.*/([^_]+).*', '')

参见regex demo

如果没有匹配需要保留结果为空,在模式末尾添加|.+

REGEXP_REPLACE('c://abcd /abcdef/0012wetr_1234567890.csv', '.*/([^_]+).*|.+', '')

详情:

  • .* - 除换行字符外的任何零个或多个字符尽可能多
  • / - 一个 / 字符
  • ([^_]+) - 第 1 组:_
  • 以外的任何一个或多个字符
  • .* - 该行的其余部分
  • | - 或
  • .+ - 除换行字符外的任何一个或多个字符尽可能多。