Regexp_Extract 分隔字符串中的第 n 个位置

Regexp_Extract nth position in delimited string

我有一个格式如下的字符串:

abc_fjs_dja_sja_dj_sadjasdksa_sdjakd_match_fsja_fsdk

我要REGEXP_EXTRACT第8个分隔位置的字符串(_作为分隔符)。

我如何使用 DataStudio 中使用的 Regex 语法执行此操作?

我试过这个:(?:[^_]*_){8}(.*?)

但这匹配字符串的第 8 个分隔段之前的任何内容,但我只想要第 8 个段。

谢谢

您可以稍微展开模式并在前七个 _([^_]*):

分隔的部分之后捕获除 _ 以外的 0 个或更多字符
^(?:[^_]*_){7}([^_]*)

regex demo

详情

  • ^ - 字符串开头
  • (?:[^_]*_){7} - 重复 7 次
    • [^_]* - _
    • 以外的 0 个或更多字符
    • _ - 下划线
  • ([^_]*) - 捕获第 1 组:除 _
  • 之外的 0 个或更多字符

REGEXP_EXTRACT returns 捕获组的内容。