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@xxxxxxxxxx / aim:depeszhdl / skype:depesz_hdl / gg:6749007 -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general