Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Область применения:
Databricks SQL
Databricks Runtime
Извлекает первую строку в str, которая соответствует выражению regexp и соответствует индексу группы regex.
Синтаксис
regexp_extract(str, regexp [, idx] )
Аргументы
-
strSTRING: выражение, соответствующее. -
regexpSTRING: выражение с соответствующим шаблоном. -
idx: Необязательное целочисленное выражение, большее или равное 0, и значение по умолчанию 1.
Возвраты
STRING.
Если str, regexpили idx есть NULL, результатом является NULL.
Если regexp не соответствует какой-либо части str, результатом является пустая строка.
Если общий шаблон совпадает, но группа, указанная idx не участвует в совпадении, результатом является пустая строка.
Строка regexp должна быть Java регулярным выражением. Поддерживаемый синтаксис см. в разделе Java шаблонов регулярных выражений.
При использовании литерала используйте raw-literal (r префикс) для предотвращения предварительной обработки символов escape-символа.
regexp может содержать несколько групп. Группы отслеживания определяются путем заключения части шаблона в скобках (...).
idx указывает, какую группу регулярных выражений следует извлечь.
Значение 0 для idx означает совпадение со всем регулярным выражением.
Значение idx по умолчанию равно 1, что означает, что первая группа захвата возвращается при idx опущении.
Если idx число групп отслеживания, определенных в regexp, Databricks вызывает ошибку.
Считается только первое совпадение regexpstr . Чтобы извлечь все совпадения, используйте regexp_extract_all.
Распространенные условия ошибки
Примеры
Извлечение определенных групп отслеживания
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Используйте idx 0 для возврата всего совпадения
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Значение idx по умолчанию — 1
При idx опущении возвращается первая группа захвата.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Нет совпадения возвращает пустую строку
> SELECT regexp_extract('hello world', '(\\d+)', 1);
Входные данные NULL возвращают ЗНАЧЕНИЕ NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Используйте необработанные строковые литералы, чтобы избежать двойного обхода
В обычной строке SQL обратная косая косая черта должна быть двойной (\\d для среднего \d).
r Используйте префикс необработанных строковых литерала для записи шаблонов более естественно.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Извлечение домена из URL-адреса
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Извлечение компонента из строки даты
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 0);
2024-03-15
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 2);
03
Необязательная группа захвата, которая не участвует в совпадении
Если группа является необязательной и не соответствует, пустая строка возвращается для этой группы.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Недопустимый шаблон регулярных выражений
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN