Thread: Find and replace
PostgreSQL 10.x
I don’t know the best way to do this. I need to do a find and replace in text fields. The value I need to find and replace may occur more than once in each field per record.
The value I am trying to match on:
Starts with a single { .
Ends with a single } .
In between these brackets can be the characters 0-9, a-z, A-Z, hyphens and underscores. But no spaces. These characters could be in any order.
The replacement value on a match is the same as what was found except for double {{ at the beginning and double }} at the end. Same values between the brackets as what was matched on.
Example:
{ab_1D3-4} becomes {{ab_1D3-4}}
Thanks for helping me with this.
Lance Campbell
University of Illinois
On Sep 11, 2019, at 2:24 PM, Campbell, Lance <lance@illinois.edu> wrote:PostgreSQL 10.xI don’t know the best way to do this. I need to do a find and replace in text fields. The value I need to find and replace may occur more than once in each field per record.The value I am trying to match on:Starts with a single { .Ends with a single } .In between these brackets can be the characters 0-9, a-z, A-Z, hyphens and underscores. But no spaces. These characters could be in any order.The replacement value on a match is the same as what was found except for double {{ at the beginning and double }} at the end. Same values between the brackets as what was matched on.Example:{ab_1D3-4} becomes {{ab_1D3-4}}Thanks for helping me with this.Lance CampbellUniversity of Illinois
I don’t think that is an option. The text I am doing the find and replace on contains CSS. I believe there will be squiggly brackets in the CSS. However, it should have spaces or carriage return line feeds between the brackets so there will not be any issues.
From: Rob Sargent <robjsargent@gmail.com>
Date: Wednesday, September 11, 2019 at 3:27 PM
To: Lance Campbell <lance@illinois.edu>
Cc: "pgsql-sql@postgresql.org" <pgsql-sql@postgresql.org>
Subject: Re: Find and replace
On Sep 11, 2019, at 2:24 PM, Campbell, Lance <lance@illinois.edu> wrote:
PostgreSQL 10.x
I don’t know the best way to do this. I need to do a find and replace in text fields. The value I need to find and replace may occur more than once in each field per record.
The value I am trying to match on:
Starts with a single { .
Ends with a single } .
In between these brackets can be the characters 0-9, a-z, A-Z, hyphens and underscores. But no spaces. These characters could be in any order.
The replacement value on a match is the same as what was found except for double {{ at the beginning and double }} at the end. Same values between the brackets as what was matched on.
Example:
{ab_1D3-4} becomes {{ab_1D3-4}}
Thanks for helping me with this.
Lance Campbell
University of Illinois
Are there curly braces which don’t start/end such strings? If not it might be easier to just double them up?
"Campbell, Lance" <lance@illinois.edu> writes: > I don’t know the best way to do this. I need to do a find and replace in text fields. The value I need to find and replacemay occur more than once in each field per record. > The value I am trying to match on: > Starts with a single { . > Ends with a single } . > In between these brackets can be the characters 0-9, a-z, A-Z, hyphens and underscores. But no spaces. These characterscould be in any order. > The replacement value on a match is the same as what was found except for double {{ at the beginning and double }} at theend. Same values between the brackets as what was matched on. Sounds like a job for regular expressions. regression=# select regexp_replace('abc{foo1}def{goo_bug}a', '{([-_a-zA-Z0-9]*)}', '{{\1}}', 'g'); regexp_replace ---------------------------- abc{{foo1}}def{{goo_bug}}a (1 row) See https://www.postgresql.org/docs/current/functions-matching.html#FUNCTIONS-POSIX-REGEXP regards, tom lane