PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL regexp_replace mit übereinstimmendem Ausdruck

Okay, Antwort gefunden. Anscheinend muss ich den Backslash in der Ersetzung doppelt maskieren. Außerdem muss ich E -Präfix und doppelte Escape-Backslashes im Suchmuster bei älteren Versionen von Postgres (in meinem Fall 8.3). Der endgültige Code sieht folgendermaßen aus:

regexp_replace('abc [def]', E'([\\[\\]\\(\\)\\\\\?\\|_%])', E'\\\\\\1', 'g')

Ja, es sieht schrecklich aus, aber es funktioniert :)