Re: BUG #15046: non-greedy ignored

From: Bob Gailer <bgailer(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Subject: Re: BUG #15046: non-greedy ignored
Date: 2018-02-03 19:08:46
Message-ID: CAP1rxO5Ljq6JOD_zgsrc0At_3qZU343hr8qtk-WWCzuBLyEirQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Thanks! Rtfp, eh?

On Feb 2, 2018 8:48 PM, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> "David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> writes:
> > On Friday, February 2, 2018, PG Bug reporting form <
> noreply(at)postgresql(dot)org>
> > wrote:
> >> Works as expected. Then I add |q to the pattern, and the .*? becomes
> >> greedy!
>
> > This seems to be explained by the final greediness rule:
> > https://www.postgresql.org/docs/10/static/functions-
> matching.html#POSIX-MATCHING-RULES
> > An RE consisting of two or more branches connected by the | operator
> is
> > always greedy.
>
> Yeah. That subsection also contains some useful advice about how to
> control greediness decisions --- in this case, wrapping the whole
> thing with (...){1,1}? might do what you want.
>
> The short answer, perhaps, is that non-greedy patterns are not
> standardized by POSIX and you shouldn't expect that all regex
> engines do them the same way. Ours is definitely different
> from Perl's, for example.
>
> regards, tom lane
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2018-02-03 19:24:24 BUG #15047: shell.dll missing
Previous Message Peter Eisentraut 2018-02-03 16:05:41 Re: BUG #14912: Undocumented: 'psql -l' assumes database 'postgresql' not $USER