REGEXP_SUBSTR
Возвращает подстроку, совпавшую с регулярным выражением.
PostgreSQL 17.9
REGEXP_SUBSTR(string, pattern[, start[, occurrence[, flags[, subexpr]]]])- [ ]необязательная часть
- string
- Строка, в которой выполняется поискtext
- pattern
- Регулярное выражениеtext
- start
- Позиция начала поиска, по умолчанию 1integerНеобязательный
- occurrence
- Номер совпадения, по умолчанию 1integerНеобязательный
- flags
- Флаги, например i — без учёта регистраtextНеобязательныйbceimnpqstwx
- subexpr
- Номер группы в скобках, которую нужно вернуть; по умолчанию 0 — всё совпадениеintegerНеобязательный
Возвращаемое значение
Строка (text); NULL, если совпадения нет
Примеры
Первое и второе число
PostgreSQL 17.9
SELECT REGEXP_SUBSTR('Order 42 from 2024-03-08', '[0-9]+') AS first_number,
REGEXP_SUBSTR('Order 42 from 2024-03-08', '[0-9]+', 1, 2) AS second_number;Домен из email через группу
PostgreSQL 17.9
SELECT email,
REGEXP_SUBSTR(email, '@(.+)$', 1, 1, '', 1) AS domain
FROM Users
LIMIT 5;Подробности
Функция появилась в PostgreSQL 15. В отличие от REGEXP_MATCH, она возвращает строку, а не массив. Чтобы указать subexpr, нужно передать и все аргументы перед ним: flags можно оставить пустой строкой ''.