Regexp_Extract n-й позиции в строке с разделителями - PullRequest
0 голосов
/ 22 мая 2018

У меня есть строка в формате:

abc_fjs_dja_sja_dj_sadjasdksa_sdjakd_match_fsja_fsdk

Я хочу REGEXP_EXTRACT строку в 8-й позиции с разделителями (_ в качестве разделителя).

Как быЯ делаю это, используя синтаксис Regex, используемый в DataStudio?

Я пробовал это: (?:[^_]*_){8}(.*?)

Но это соответствует чему угодно вплоть до 8-го сегмента строки, включая разделитель, который я хочуТОЛЬКО 8-й сегмент.

Спасибо

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете немного развернуть шаблон и захватить 0 или более символов, отличных от _ после первых семи _ разделенных частей с помощью ([^_]*):

^(?:[^_]*_){7}([^_]*)

См. Регулярное выражение демо

Подробности

  • ^ - начало строки
  • (?:[^_]*_){7} - 7 повторений
    • [^_]* - 0 или более символов, кроме _
    • _ - подчеркивание
  • ([^_]*) - группа захвата 1: 0 или болеесимволы, отличные от _

REGEXP_EXTRACT, возвращает содержимое группы захвата.

...