Re: why non-greedy modifier for one atom changesgreediness of other atoms?
От | Albe Laurenz |
---|---|
Тема | Re: why non-greedy modifier for one atom changesgreediness of other atoms? |
Дата | |
Msg-id | D960CB61B694CF459DCFB4B0128514C203938105@exadv11.host.magwien.gv.at обсуждение исходный текст |
Ответ на | Re: why non-greedy modifier for one atom changes greediness of other atoms? (hubert depesz lubaczewski <depesz@depesz.com>) |
Список | pgsql-general |
hubert depesz lubaczewski wrote: >> Example: >> # select x, substring( x from E'^((.*?)(\\.[0-9]+))') from >( values ('ab.123xxx.46hfd'),('a.b.c.d.123xx')) as q (x); >> x | substring >> -----------------+----------- >> ab.123xxx.46hfd | ab.1 >> a.b.c.d.123xx | a.b.c.d.1 >> (2 rows) >> >> >> I found in docs, that this is what happens, but I don't understand the >> logic behind forcing unique greediness in whole expression. Yes, that's odd. >> Also - how can one write a regexp that will match "ab.123" and >> "a.b.c.d.123" respectively? > > > sorry - it could have be unclear - in case of string 'ab123bc.12xx' > return value should be 'ab123bc.12' - i.e. we have to search to first . > followed by digits and return it from beginning of string to the last of > digits. You could add a negative lookahead to exclude digits after the last match: ... substring(x from E'^(.*?\\.\\d+(?!\\d))') ... Yours, Laurenz Albe
В списке pgsql-general по дате отправления: