Вы не можете получить доступ к захваченным значениям, и регулярное выражение POSIX, используемое в Redshift, не поддерживает обходные пути.
Вы можете использовать функцию REGEXP_REPLACE
. Например. чтобы извлечь седьмое значение из строки с разделителями, вы можете использовать
regexp_replace(s, '^(d[0-9]+=[^;]+;){6}d[0-9]+=([^;]+).*', '\2')
См. Демоверсию regex
Это соответствует
^
- начало строки
(d[0-9]+=[^;]+;){6}
- 6 повторений d
, 1+ цифр, =
, 1+ символов, отличных от ;
, а затем ;
d[0-9]+=
- d
, 1+ цифр, =
([^;]+)
- Группа 2 (обозначается \2
из шаблона замены): 1+ символов, отличных от ;
.*
- остаток строки.
Чтобы получить первое значение, замените {6}
на {0}
, второе значение можно получить с помощью {1}
и т. Д.