BUG #13538: REGEX non-greedy is working incorrectly (and also greedy matches fail if non-greedy is present)

Поиск
Список
Период
Сортировка
От christian_maechler@hotmail.com
Тема BUG #13538: REGEX non-greedy is working incorrectly (and also greedy matches fail if non-greedy is present)
Дата
Msg-id 20150803224450.1115.8803@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #13538: REGEX non-greedy is working incorrectly (and also greedy matches fail if non-greedy is present)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      13538
Logged by:          Chris Mächler
Email address:      christian_maechler@hotmail.com
PostgreSQL version: 9.3.0
Operating system:   ?
Description:

Here is an example to verify and reproduce the error (extract a number and
the things before and after it with 3 groups):


'(.*)([+-]?[0-9]*\.[0-9]+)(.*)'

Using regexü_matches this will produce an undesirable result (only one digit
in group 2), but everything behaves correctly, the third group matches until
the end.

'(.*?)([+-]?[0-9]*\.[0-9]+)(.*)'

If we change the first group to non-greedy to fix this, then the bug
appears: the third group becomes non-greedy too (it shouldn't!) and
therefore it is always empty instead of matching until the end of the line.
Also the first group is empty (should match from start!), it should find a
match at start position, whether it is non-greedy or not and not look ahead
if the non-greedy group can be reduced if starting to match at the next
index. Both are wrong behaviors.

(the workaround is anchoring, but the behavior of the regex is still wrong)

link: http://sqlfiddle.com/#!15/f0f14/14

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

Предыдущее
От: tumelolilele@gmail.com
Дата:
Сообщение: BUG #13537: Npgsql bug
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #13538: REGEX non-greedy is working incorrectly (and also greedy matches fail if non-greedy is present)