Re: regexp_replace double quote

Поиск
Список
Период
Сортировка
От Михаил
Тема Re: regexp_replace double quote
Дата
Msg-id CALSKcLQ_WcOBX2yxuQrmoMxz+oKyEzvSUW3GysJGK73D+CVPNA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: regexp_replace double quote  (hubert depesz lubaczewski <depesz@depesz.com>)
Список pgsql-general
Thank you!

2016-08-15 18:36 GMT+05:00, hubert depesz lubaczewski <depesz@depesz.com>:
> On Mon, Aug 15, 2016 at 06:27:06PM +0500, Михаил wrote:
>> 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\"}"""
>>
>> 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\"}"""
>
> This is because when finding first "", "a" that is afterwards get
> assigned to \2. and thus is already "used", and can't be part of
> match for the second "".
>
> What will solve the problem is to use lookahead, like:
> $ select regexp_replace('"""{Performer,"Boomwacker ""a"" Recording""}"""',
> '([^"])"{2}(?=[^"])', '\1\"', 'g');
>                  regexp_replace
> -------------------------------------------------
>  """{Performer,"Boomwacker \"a\" Recording\"}"""
> (1 row)
>
> because then the part inside (?=...) is not "used", and can be used for
> next
> match.
>
> Not sure if I'm clear, but hopefully you'll understand what I'm trying to
> explain :)
>
> Best regards,
>
> depesz
>
>


--
---
Regards,

Mikhail


В списке pgsql-general по дате отправления:

Предыдущее
От: Pete Fuller
Дата:
Сообщение: Re: 9.2 to 9.5 pg_upgrade losing data
Следующее
От: "Yelai, Ramkumar"
Дата:
Сообщение: Re: pgbasebackup is failing after truncate