Re: Getting unexpected results from regexp_replace

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Dan Nessett <dnessett(at)yahoo(dot)com>
Cc: PostgreSQL General <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Getting unexpected results from regexp_replace
Date: 2021-02-21 15:50:30
Message-ID: 3462956.1613922630@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Dan Nessett <dnessett(at)yahoo(dot)com> writes:
> SELECT user_name, regexp_replace(user_email, E'\(.*\)', '') AS user_email, family_list, street_address, city, state, zip, phone_list, email_list
> FROM "household_data"
> WHERE email_list != ‘';

Because you used E'...', the backslashes are eaten by the string literal
parser. So the pattern seen by regexp_replace() is just '(.*)', in
which the parens are capturing parens not literal characters. Thus it
matches the whole string.

Personally I'd leave off the E, but if you must use it then double the
backslashes.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Dan Nessett 2021-02-21 16:05:31 Re: Getting unexpected results from regexp_replace
Previous Message Dan Nessett 2021-02-21 15:37:45 Getting unexpected results from regexp_replace