why non-greedy modifier for one atom changes greediness of other atoms?

From: hubert depesz lubaczewski <depesz(at)depesz(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: why non-greedy modifier for one atom changes greediness of other atoms?
Date: 2010-01-04 10:30:51
Message-ID: 20100104103051.GA21234@depesz.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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.

Also - how can one write a regexp that will match "ab.123" and
"a.b.c.d.123" respectively?

in pl/perl it's of course trivial, but I can't seem to find a way to do it in substring() regexps.

Best regards,

depesz

--
Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/
jid/gtalk: depesz(at)depesz(dot)com / aim:depeszhdl / skype:depesz_hdl / gg:6749007

Responses

Browse pgsql-general by date

  From Date Subject
Next Message hubert depesz lubaczewski 2010-01-04 10:49:22 Re: why non-greedy modifier for one atom changes greediness of other atoms?
Previous Message Thomas Kellerer 2010-01-04 10:20:02 8.5 Alpha3 - broken downloadlink