Справочник по функциям

REGEXP_SUBSTR

Возвращает подстроку, совпавшую с регулярным выражением.

PostgreSQL 17.5
REGEXP_SUBSTR(string, pattern[, start[, occurrence[, flags[, subexpr]]]])

Параметры

stringtext
Строка, в которой выполняется поиск
patterntext
Регулярное выражение
startintegerнеобязательный
Позиция начала поиска, по умолчанию 1
occurrenceintegerнеобязательный
Номер совпадения, по умолчанию 1
flagstextнеобязательный
Флаги, например i — без учёта регистра
subexprintegerнеобязательный
Номер группы в скобках, которую нужно вернуть; по умолчанию 0 — всё совпадение

Возвращаемое значение

Строка (text); NULL, если совпадения нет

Примеры

Первое и второе число

PostgreSQL 17.5
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;
first_numbersecond_number
422024

Домен из email через группу

PostgreSQL 17.5
SELECT email,
	REGEXP_SUBSTR(email, '@(.+)$', 1, 1, '', 1) AS domain
FROM Users
LIMIT 5;
emaildomain
barjam@hotmail.comhotmail.com
tellis@me.comme.com
metzzo@superhotmail.comsuperhotmail.com
ralamosm@verizon.netverizon.net
barjam@hotmail.comhotmail.com

Подробности

Функция появилась в PostgreSQL 15. В отличие от REGEXP_MATCH, она возвращает строку, а не массив. Чтобы указать subexpr, нужно передать и все аргументы перед ним: flags можно оставить пустой строкой ''.

Смотрите также