s...@coolheads.com writes: > Here, the whole regexp is non-capturing, right, so how can the result be > reported as shown?
No, the outer parens are non-capturing, but the ones inside them still are capturing parens. Perhaps it would clarify matters if you tried it with plain outer parens: =# SELECT regexp_matches('abc01234xyz', '((.*?)(\d+)(.*)){1,1}'); regexp_matches ----------------------------- {abc01234xyz,abc,01234,xyz} (1 row) In this case we get a report from each of the four sets of capturing parens. Or another example: =# SELECT regexp_matches('abc01234xyz', '((?:.*?)(\d+)(.*)){1,1}'); regexp_matches ------------------------- {abc01234xyz,01234,xyz} (1 row) Outer parens capture, first inner set don't, other two inner sets do. regards, tom lane -- Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-docs