replace inside regexp_replace

From: Oliver Kohll <oliver(at)agilechilli(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: replace inside regexp_replace
Date: 2021-06-21 13:27:22
Message-ID: CAMS=m5+sh7=4jtEGmgxyQ8OfiL=5YM8DUYQN5UxKZBdtotBsNQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

I have some text

'here is [[my text]] to replace and [[some more]]'

which I want to transform to

'here is my_text to replace and some_more'

i.e. wherever there are double square brackets, remove them and replace
spaces in the contents with underscores.

My attempt to do that is the regex

select regexp_replace(
'here is [[my text]] to replace and [[some more]]',
E'\\[\\[(.*?)\\]\\]',
replace(E'\\1', ' ', '_'),
'g'
);

which results in

'here is my text to replace and some more'

It half works, i.e. it removes the brackets but doesn't seem to process the
inner replace. It's as if the select were just

select regexp_replace(
'here is [[my text]] to replace and [[some more]]',
E'\\[\\[(.*?)\\]\\]',
E'\\1',
'g'
);

I've a feeling I'm missing something fundamental, any idea what?

Thanks
Oliver

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Thorsten Schöning 2021-06-21 13:53:09 How to hash a large amount of data within Postgres?
Previous Message Brajendra Pratap Singh 2021-06-21 12:38:41 XX001ERROR: found xmin from before relfrozenxid for pg_authid and pg_database