OK、答えが見つかりました。どうやら、私は交換でバックスラッシュをダブルエスケープする必要があります。また、E
する必要があります -古いバージョンのpostgres(私の場合は8.3)の検索パターンのプレフィックスとダブルエスケープバックスラッシュ。最終的なコードは次のようになります:
regexp_replace('abc [def]', E'([\\[\\]\\(\\)\\\\\?\\|_%])', E'\\\\\\1', 'g')
はい、それはひどいように見えますが、それは機能します:)