Re: BUG #18870: weird behavior with regexp_replace

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: devops@key2asset.com
Cc: pgsql-bugs@lists.postgresql.org
Date: 2025-03-27T21:23:58Z
Lists: pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes:
> select regexp_replace(LOWER('Örebro'), '\W', '_', 'g')  in postgres 15 the
> result is örebro which is correct since ö should fit in the \w for a
> regex.
> select regexp_replace(LOWER('Örebro'), '\W', '_', 'g') --> since postgres 17
> the result is _rebro which is incorrect since \w should also contain
> characters like ö, ä, ë.

This most likely indicates that you've got a different database
collation selected in the v17 installation.  Postgres defers to
the LC_CTYPE setting (or, in some configurations, the ICU collation)
to decide what is a letter.  See

https://www.postgresql.org/docs/current/charset.html

psql's "\l" command will give a quick overview of what collations
you have selected.

			regards, tom lane