REGEXP_EXTRACT_ALL_ARRAY
Описание
Извлекает все непересекающиеся совпадения первой группы захвата в <pattern> из <str> и возвращает массив строк в порядке совпадений. Возвращает NULL, если хотя бы один из аргументов равен NULL.
Синтаксис
REGEXP_EXTRACT_ALL_ARRAY(<str>, <pattern>)
Параметры
| Параметр | Описание |
|---|---|
<str> | Входная строка типа STRING. |
<pattern> | Регулярное выражение типа STRING. Извлекается первая группа захвата; третий аргумент с индексом группы не поддерживается. |
Возвращаемое значение
Возвращает ARRAY<STRING>. Возвращает пустой массив [], если нет совпадений или группы захвата. Возвращает NULL, если хотя бы один из аргументов равен NULL. Некорректное регулярное выражение вызывает ошибку.
По умолчанию движок использует синтаксис RE2 и учитывает регистр при поиске совпадений. Переменная сеанса enable_extended_regex включает расширенные возможности регулярных выражений; см. REGEXP_EXTRACT_ALL. Эта функция возвращает массив, а REGEXP_EXTRACT_ALL возвращает форматированную строку.
Пример
SELECT regexp_extract_all_array('id=12,id=34', 'id=([0-9]+)') AS result;
["12", "34"]
Используйте (?i) для поиска совпадений без учёта регистра:
SELECT regexp_extract_all_array('Hello hello HELLO', '(?i)(hello)') AS result;
["Hello", "hello", "HELLO"]
SELECT regexp_extract_all_array('abc', '([0-9]+)') AS no_match,
regexp_extract_all_array('abc', 'abc') AS no_capture_group;
[] []
SELECT regexp_extract_all_array(NULL, '(a)') AS null_input,
regexp_extract_all_array('a', NULL) AS null_pattern;
NULL NULL
Результат можно передать непосредственно в функции для работы с массивами:
SELECT array_size(regexp_extract_all_array('a1b2', '([0-9])')) AS matches;
2