[BUGS] BUG #1686: Regular expression problem

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[BUGS] BUG #1686: Regular expression problem

Halley Pacheco de Oliveira

The following bug has been logged online:

Bug reference:      1686
Logged by:          Halley Pacheco de Oliveira
Email address:      [hidden email]
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?

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq
Reply | Threaded
Open this post in threaded view
|

Re: [BUGS] BUG #1686: Regular expression problem

Alvaro Herrera
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"

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [hidden email] so that your
      message can get through to the mailing list cleanly
Reply | Threaded
Open this post in threaded view
|

Re: [BUGS] BUG #1686: Regular expression problem

Bruno Wolff III
On Tue, May 31, 2005 at 11:15:23 -0400,
  Alvaro Herrera <[hidden email]> 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?

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend
Reply | Threaded
Open this post in threaded view
|

Re: [BUGS] BUG #1686: Regular expression problem

Tom Lane-2
Bruno Wolff III <[hidden email]> writes:
> On Tue, May 31, 2005 at 11:15:23 -0400,
>   Alvaro Herrera <[hidden email]> 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

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [hidden email] so that your
      message can get through to the mailing list cleanly