On Tuesday 10. June 2008, Leif B. Kristensen wrote: >Hey, I told it not to be greedy, didn't I? Found it. I must make *both* atoms non-greedy: pgslekt=> CREATE OR REPLACE FUNCTION link_expand(TEXT) RETURNS TEXT AS $$ SELECT REGEXP_REPLACE($1, E'\\[p=(\\d+?)\\|(.+?)\\]', E'<a href="./family.php?person=\\1">\\2</a>', 'g'); $$ LANGUAGE sql STABLE; CREATE FUNCTION pgslekt=> select link_expand('[p=123|John Smith] and [p=456|Jane Doe]'); link_expand ----------------------------------------------------------------------------------------------------- <a href="./family.php?person=123">John Smith</a> and <a href="./family.php?person=456">Jane Doe</a> (1 row) It's not totally intuitive, but at least now it works. -- Leif Biberg Kristensen | Registered Linux User #338009 http://solumslekt.org/ | Cruising with Gentoo/KDE My Jazz Jukebox: http://www.last.fm/user/leifbk/