REGEXP_MATCH
Entsprechung in MySQL:
Gibt ein Array von Teilstrings aus dem ersten Treffer eines regulären Ausdrucks zurück.
PostgreSQL 17.5
REGEXP_MATCH(string, pattern[, flags])Parameter
- stringtext
- String, in dem gesucht wird
- patterntext
- Regulärer Ausdruck
- flagstextoptional
- Flags, zum Beispiel i, um Groß- und Kleinschreibung zu ignorieren
Rückgabewert
Text-Array (text[]) aus dem ersten Treffer; NULL, wenn es keinen Treffer gibt
Beispiele
Datumsteile aus einem Text
PostgreSQL 17.5
SELECT REGEXP_MATCH(
'Order from 2024-03-08',
'([0-9]{4})-([0-9]{2})-([0-9]{2})'
);Benutzername und Domain aus E-Mail
PostgreSQL 17.5
SELECT email,
REGEXP_MATCH(email, '^(.+)@(.+)$') AS parts
FROM Users
LIMIT 5;Domain als Array-Element
PostgreSQL 17.5
SELECT email,
(REGEXP_MATCH(email, '@(.+)$')) [1] AS domain
FROM Users
LIMIT 5;Details
Enthält der Ausdruck Gruppen in Klammern, enthält das Array ein Element pro Gruppe, sonst ein einziges Element mit dem ganzen Treffer. Ein einzelnes Element erhältst du über seine Nummer: (REGEXP_MATCH(...))[1]. Das Flag g wird nicht unterstützt: Alle Treffer liefert REGEXP_MATCHES(..., 'g'), eine Ergebniszeile pro Treffer. Um den Treffer als String statt als Array zu erhalten, verwende REGEXP_SUBSTR, das es in PostgreSQL ab Version 15 gibt.