On Mon, Aug 15, 2016 at 9:27 AM, Михаил <m.nased...@gmail.com> wrote:
> Hi! > > I need to escape double quotes only: > test=# select regexp_replace('"""{Performer,"Boomwacker ""a"" > Recording""}"""', '([^"])"{2}([^"])', '\1\"\2', 'g'); > regexp_replace > ------------------------------------------------- > """{Performer,"Boomwacker \"a"" Recording\"}""" > What is the goal you are trying to accomplish. Its possible to do what you ask but only if no other solution is feasible. > This is unexpected result. > > But when added one symbol to ""a"" the result is right: > test=# select regexp_replace('"""{Performer,"Boomwacker ""a1"" > Recording""}"""', ' > > ([^"])"{2}([^"])', '\1\"\2', 'g'); > regexp_replace > -------------------------------------------------- > """{Performer,"Boomwacker \"a1\" Recording\"}""" > > < ([^"])"{2}([^"])> on < ""a""> consumes < ""a> leaving <""> which doesn't match your pattern since there is nothing before the double-quote to satisfy the [^"] See depesz's simultaneous post for the solution using look-ahead. David J.