From: | hubert depesz lubaczewski <depesz(at)depesz(dot)com> |
---|---|
To: | anudeepvattikonda0404(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: BUG #18956: Observing an issue in regexp_count() |
Date: | 2025-06-12 12:10:00 |
Message-ID: | aErDmEWoyiNrhY1M@depesz.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Thu, Jun 12, 2025 at 08:03:25AM +0000, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference: 18956
> Logged by: Anudeep Vattikonda
> Email address: anudeepvattikonda0404(at)gmail(dot)com
> PostgreSQL version: 17.5
> Operating system: Mac
> Description:
>
> Hi
> 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?
Docs
(https://www.postgresql.org/docs/17/functions-matching.html#FUNCTIONS-POSIX-REGEXP)
show:
\b - backspace, as in C
\B - synonym for backslash (\) to help reduce the need for backslash doubling
As far as I can tell pg regexps have nothing related to word boundaries.
You could get 2 by changing the regexp to something that actually works:
$ select REGEXP_COUNT('cat at the flat', '[a-z]at(?![a-z])');
regexp_count
──────────────
2
(1 row)
Best regards,
depesz
From | Date | Subject | |
---|---|---|---|
Next Message | Fujii Masao | 2025-06-12 12:20:47 | Re: BUG #18952: pg_restore --help and document have strange description: Dump something |
Previous Message | Michael Paquier | 2025-06-12 08:03:27 | Re: BUG #18944: Assertion Failure in psql with idle_session_timeout Set |