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

REGEXP_MATCHES

Возвращает совпадения с регулярным выражением: с флагом g — все, по строке результата на каждое.

PostgreSQL 17.5
REGEXP_MATCHES(string, pattern[, flags])

Параметры

stringtext
Строка, в которой выполняется поиск
patterntext
Регулярное выражение
flagstextнеобязательный
Флаги: g — все совпадения, i — без учёта регистра

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

Набор массивов text[]; пустой набор, если совпадений нет

Примеры

Все числа строки

PostgreSQL 17.5
SELECT REGEXP_MATCHES('a1b22c333', '[0-9]+', 'g') AS numbers;
numbers
1
22
333

Части каждой даты

PostgreSQL 17.5
SELECT REGEXP_MATCHES(
		'2024-03-08, 2025-12-31',
		'([0-9]{4})-([0-9]{2})-([0-9]{2})',
		'g'
	) AS date_parts;
date_parts
20240308
20251231

Заглавные буквы в именах

PostgreSQL 17.5
SELECT member_name,
	(REGEXP_MATCHES(member_name, '[A-Z]', 'g')) [1] AS capital
FROM FamilyMembers;
member_namecapital
Headley QuinceyH
Headley QuinceyQ
Flavia QuinceyF
Flavia QuinceyQ
Andie QuinceyA
Andie QuinceyQ
Lela QuinceyL
Lela QuinceyQ
Annie QuinceyA
Annie QuinceyQ

Подробности

Каждое совпадение — массив text[]: по элементу на каждую группу в скобках или один элемент со всем совпадением. Без флага g возвращается только первое совпадение.

Функция возвращает набор строк, поэтому в SELECT размножает строку таблицы, а если совпадений нет, строка пропадает из результата. Чтобы строка оставалась, используйте REGEXP_MATCH: она возвращает одно совпадение или NULL.

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