Обсуждение: Prob with regexp

Поиск
Список
Период
Сортировка

Prob with regexp

От
Philippe Rochat
Дата:
I think there is a prob with regexp, which is comparing one less
character as it should. Below is an example. Result is that last
character is omitted !

Ph.R.

postgres=# select * from pg_database where datname ~ 'ibd01*';datname | datdba | encoding | datpath 
---------+--------+----------+---------ibd00_8 |    505 |        0 | ibd00_8ibd00_1 |    505 |        0 |
ibd00_1ibd00_2|    505 |        0 | ibd00_2ibd00_3 |    505 |        0 | ibd00_3ibd00_4 |    505 |        0 |
ibd00_4ibd00_5|    505 |        0 | ibd00_5ibd00_6 |    505 |        0 | ibd00_6ibd00_7 |    505 |        0 |
ibd00_7ibd00_9|    505 |        0 | ibd00_9ibd01_1 |    505 |        0 | ibd01_1ibd01_2 |    505 |        0 |
ibd01_2ibd01_3|    505 |        0 | ibd01_3ibd01_4 |    505 |        0 | ibd01_4ibd01_5 |    505 |        0 | ibd01_5
 
(14 rows)

postgres=# select * from pg_database where datname ~ 'ibd01_*';datname | datdba | encoding | datpath 
---------+--------+----------+---------ibd01_1 |    505 |        0 | ibd01_1ibd01_2 |    505 |        0 |
ibd01_2ibd01_3|    505 |        0 | ibd01_3ibd01_4 |    505 |        0 | ibd01_4ibd01_5 |    505 |        0 | ibd01_5
 
(5 rows)


Re: Prob with regexp

От
Tom Lane
Дата:
Philippe Rochat <mlrochat@lbdsun.epfl.ch> writes:
> I think there is a prob with regexp, which is comparing one less
> character as it should. Below is an example. Result is that last
> character is omitted !

Possibly there is a problem with your understanding of regexp patterns
... but all those matches look valid to me.  See
http://www.postgresql.org/devel-corner/docs/postgres/functions-matching.html
for more info.
        regards, tom lane


Re: Prob with regexp

От
Peter Eisentraut
Дата:
Philippe Rochat writes:

> I think there is a prob with regexp, which is comparing one less
> character as it should. Below is an example. Result is that last
> character is omitted !

A '*' means "zero or more of the preceeding character".  You probably want
a '+'.

>
> Ph.R.
>
> postgres=# select * from pg_database where datname ~ 'ibd01*';
>  datname | datdba | encoding | datpath
> ---------+--------+----------+---------
>  ibd00_8 |    505 |        0 | ibd00_8
>  ibd00_1 |    505 |        0 | ibd00_1
>  ibd00_2 |    505 |        0 | ibd00_2
>  ibd00_3 |    505 |        0 | ibd00_3
>  ibd00_4 |    505 |        0 | ibd00_4
>  ibd00_5 |    505 |        0 | ibd00_5
>  ibd00_6 |    505 |        0 | ibd00_6
>  ibd00_7 |    505 |        0 | ibd00_7
>  ibd00_9 |    505 |        0 | ibd00_9
>  ibd01_1 |    505 |        0 | ibd01_1
>  ibd01_2 |    505 |        0 | ibd01_2
>  ibd01_3 |    505 |        0 | ibd01_3
>  ibd01_4 |    505 |        0 | ibd01_4
>  ibd01_5 |    505 |        0 | ibd01_5
> (14 rows)
>
> postgres=# select * from pg_database where datname ~ 'ibd01_*';
>  datname | datdba | encoding | datpath
> ---------+--------+----------+---------
>  ibd01_1 |    505 |        0 | ibd01_1
>  ibd01_2 |    505 |        0 | ibd01_2
>  ibd01_3 |    505 |        0 | ibd01_3
>  ibd01_4 |    505 |        0 | ibd01_4
>  ibd01_5 |    505 |        0 | ibd01_5
> (5 rows)
>

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/