Re: BUG #18956: Observing an issue in regexp_count() - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #18956: Observing an issue in regexp_count()
Date
Msg-id 1203062.1749736486@sss.pgh.pa.us
Whole thread Raw
In response to BUG #18956: Observing an issue in regexp_count()  (PG Bug reporting form <noreply@postgresql.org>)
Responses Re: BUG #18956: Observing an issue in regexp_count()
List pgsql-bugs
hubert depesz lubaczewski <depesz@depesz.com> writes:
> On Thu, Jun 12, 2025 at 08:03:25AM +0000, PG Bug reporting form wrote:
>> I am trying to run the below query
>> select REGEXP_COUNT('cat at the flat', '\Bat\b') ;
>> I was expecting it to return 2 but I see Postgres is returning 0. I see that
>> there are two matches, cat and flat. All it should do is to look for the
>> word at whose left side shoudn't be a word boundary while the right side
>> should be a word boundary

> What makes you think that \B/\b has anything to do with word boundary?

Indeed, they do not.

> As far as I can tell pg regexps have nothing related to word boundaries.

Sure we do, see "Regular Expression Constraint Escapes":

https://www.postgresql.org/docs/current/functions-matching.html#POSIX-CONSTRAINT-ESCAPES-TABLE

Unfortunately, since these are all way outside the POSIX regexp
standard, different systems have implemented these extensions
differently.  I don't doubt that \B/\b mean word boundaries
in some other system.

            regards, tom lane



pgsql-bugs by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: BUG #18952: pg_restore --help and document have strange description: Dump something
Next
From: hubert depesz lubaczewski
Date:
Subject: Re: BUG #18956: Observing an issue in regexp_count()