Search Postgresql Archives

Re: why non-greedy modifier for one atom changesgreediness of other atoms?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux