BUG #1686: Regular expression problem

Started by Halley Pacheco de Oliveiraalmost 21 years ago4 messagesbugs
Jump to latest
#1Halley Pacheco de Oliveira
halleypo@yahoo.com.br

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?

#2Alvaro Herrera
alvherre@surnet.cl
In reply to: Halley Pacheco de Oliveira (#1)
Re: BUG #1686: Regular expression problem

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"

#3Bruno Wolff III
bruno@wolff.to
In reply to: Alvaro Herrera (#2)
Re: BUG #1686: Regular expression problem

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?

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruno Wolff III (#3)
Re: BUG #1686: Regular expression problem

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