Mike Christensen <m...@kitchenpc.com> writes: > I'm curious why this query returns 0: > SELECT 'AAA' ~ '^A{,4}$'
> Yet, this query returns 1: > SELECT 'AAA' ~ '^A{0,4}$' > Is this a bug with the regular expression engine? Our regex documentation lists the following variants of bounds syntax: {m} {m,} {m,n} Nothing about {,n}. I rather imagine that the engine is deciding that that's just literal text and not a bounds constraint ... regression=# SELECT 'A{,4}' ~ '^A{,4}$'; ?column? ---------- t (1 row) ... yup, apparently so. A look at the POSIX standard says that it has the same idea of what is a valid bounds constraint: When an ERE matching a single character or an ERE enclosed in parentheses is followed by an interval expression of the format "{m}", "{m,}", or "{m,n}", together with that interval expression it shall match what repeated consecutive occurrences of the ERE would match. The values of m and n are decimal integers in the range 0 <= m<= n<= {RE_DUP_MAX}, where m specifies the exact or minimum number of occurrences and n specifies the maximum number of occurrences. The expression "{m}" matches exactly m occurrences of the preceding ERE, "{m,}" matches at least m occurrences, and "{m,n}" matches any number of occurrences between m and n, inclusive. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general