Prob with regexp

Started by Philippe Rochatabout 25 years ago3 messageshackers
Jump to latest
#1Philippe Rochat
mlrochat@lbdsun.epfl.ch

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_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)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Philippe Rochat (#1)
Re: Prob with regexp

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

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Philippe Rochat (#1)
Re: Prob with regexp

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/