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

REGEXP_MATCHES

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

PostgreSQL 17.9
REGEXP_MATCHES(string, pattern[, flags])
  • [ ]необязательная часть
string
Строка, в которой выполняется поиск
text
pattern
Регулярное выражение
text
flags
Флаги, например 'gi'
textНеобязательный
bcegimnpqstwx

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

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

Примеры

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

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

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

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

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

PostgreSQL 17.9
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.

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