Re: BUG #15046: non-greedy ignored

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: BUG #15046: non-greedy ignored
Дата
Msg-id CAKFQuwY-QAB7Gi+2q_m3SMFM4SQnXbDuk=vAERg0KL04LeiSiA@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #15046: non-greedy ignored  (PG Bug reporting form <noreply@postgresql.org>)
Ответы Re: BUG #15046: non-greedy ignored
Список pgsql-bugs
On Friday, February 2, 2018, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      15046
Logged by:          Bob Gailer
Email address:      bgailer@gmail.com
PostgreSQL version: 10.1
Operating system:   windows 10
Description:

I start psql; enter:

postgres=# select regexp_replace('a(d)s(e)f', '\(.*?\)', '', 'g');
 regexp_replace
----------------
 asf
(1 row)

Works as expected. Then I add |q to the pattern, and the .*? becomes
greedy!

postgres=# select regexp_replace('a(d)s(e)f', '\(.*?\)|q', '', 'g');
 regexp_replace
----------------
 af
(1 row)


This seems to be explained by the final greediness rule:


  • An RE consisting of two or more branches connected by the | operator is always greedy.


    David J.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #15046: non-greedy ignored
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #15046: non-greedy ignored