Thread: BUG #1686: Regular expression problem
The following bug has been logged online: Bug reference: 1686 Logged by: Halley Pacheco de Oliveira Email address: halleypo@yahoo.com.br PostgreSQL version: 7.4 and 8.0 Operating system: Linux and Windows Description: Regular expression problem Details: SELECT '200.222.197.219' SIMILAR TO '([[:alnum:]_]+).([[:alnum:]_]+).([[:alnum:]_]+)'; ?column? ---------- t (1 row) SELECT '200.222.197.219' ~ '([[:alnum:]_]+)\\.([[:alnum:]_]+)\\.([[:alnum:]_]+)'; ?column? ---------- t (1 row) SELECT '200.222.197.219' SIMILAR TO '([\\w-]+).([\\w-]+).([\\w]+)'; ?column? ---------- f (1 row) SELECT '200.222.197.219' ~ '([\\w-]+)\\.([\\w-]+)\\.([\\w]+)'; ?column? ---------- t (1 row) Why does the third query gives a different output? It is not exactly the same as the first query?
On Sat, May 28, 2005 at 11:22:12PM +0100, Halley Pacheco de Oliveira wrote: > [third query:] > > SELECT '200.222.197.219' SIMILAR TO '([\\w-]+).([\\w-]+).([\\w]+)'; > > ?column? > ---------- > f > (1 row) > > Why does the third query gives a different output? It is not exactly the > same as the first query? Hmm, you are aware that SIMILAR TO is defined by the SQL standard, so the rules are not exactly the same as POSIX regexes, right? I guess the \w character class (a Perl-ism, I think) is not defined for SIMILAR TO. (Note that our ~ regexes are powered by code of Tcl's heritage, so you could check Tcl's manual on regexes.) Anyway I wonder why you are trying to use regular expressions when you could be using the INET type; maybe the INET input function if it came to it. -- Alvaro Herrera (<alvherre[a]surnet.cl>) "Limítate a mirar... y algun día veras"
On Tue, May 31, 2005 at 11:15:23 -0400, Alvaro Herrera <alvherre@surnet.cl> wrote: > > (Note that our ~ regexes are powered by code of Tcl's heritage, so you > could check Tcl's manual on regexes.) Aren't they based directly on Henry Spencer's code?
Bruno Wolff III <bruno@wolff.to> writes: > On Tue, May 31, 2005 at 11:15:23 -0400, > Alvaro Herrera <alvherre@surnet.cl> wrote: >> (Note that our ~ regexes are powered by code of Tcl's heritage, so you >> could check Tcl's manual on regexes.) > Aren't they based directly on Henry Spencer's code? It *is* Henry's code, lock stock and barrel, inherited by way of Tcl. I'm not sure how much Henry is involved in maintaining the Tcl regex engine anymore, but he's certainly the original author. regards, tom lane