Thread: Regular expression problem

Regular expression problem

From
Matias Surdi
Date:
Hi... I'm dealing with a regular expression in a check constraint for 
many days.... i'm stuck with this...
what I'm doing is adding a check to an existing table on a field called 
codigoex1 (varchar(9) )
check (codigoex1 ~* '[a-z]{2,2}')

and I can't get it to work!
I want to validate only input data such as "ar" "Us" "bR" and NOT 
something like "rum" "a"
the previous reg. expr. only works like it were ~* '[a-z]{2}' , so, it 
ignores the maximum length.

Tanks a lot!







Re: Regular expression problem

From
Manuel Sugawara
Date:
Matias Surdi <matiass@interlap.com.ar> writes:

> Hi... I'm dealing with a regular expression in a check constraint for many
> days.... i'm stuck with this...
> 
> what I'm doing is adding a check to an existing table on a field called
> codigoex1 (varchar(9) )
> 
> check (codigoex1 ~* '[a-z]{2,2}')
> 
> and I can't get it to work!
> I want to validate only input data such as "ar" "Us" "bR" and NOT something
> like "rum" "a"

Use something like '^[a-z]{2}$'

Regards,
Manuel.


Re: Regular expression problem

From
Manuel Sugawara
Date:
Matias Surdi <matiass@interlap.com.ar> writes:

> Manuel Sugawara wrote:
> >Use something like '^[a-z]{2}$'
> 
> so, is this a bug????

No it is not. The sintax you are using is not supported.

Regards,
Manuel.




Re: Regular expression problem

From
"scott.marlowe"
Date:
On 24 Oct 2003, Manuel Sugawara wrote:

> Matias Surdi <matiass@interlap.com.ar> writes:
> 
> > Manuel Sugawara wrote:
> > >Use something like '^[a-z]{2}$'
> > 
> > so, is this a bug????
> 
> No it is not. The sintax you are using is not supported.

It certainly seems to work in Postgresql 7.4 beta 4:

create table test2 (info text);
CREATE TABLE
insert into test2 values ('ab');
INSERT 109169538 1
insert into test2 values ('abc');
INSERT 109169539 1

marl8412=# select * from test2 where info ~ '^[a-z]{2}$';info
------ab

Or was there more to that message I wasn't getting?



Re: Regular expression problem

From
Manuel Sugawara
Date:
"scott.marlowe" <scott.marlowe@ihs.com> writes:

> It certainly seems to work in Postgresql 7.4 beta 4:
> 
> create table test2 (info text);
> CREATE TABLE
> insert into test2 values ('ab');
> INSERT 109169538 1
> insert into test2 values ('abc');
> INSERT 109169539 1
> 
> marl8412=# select * from test2 where info ~ '^[a-z]{2}$';
>  info
> ------
>  ab
> 
> Or was there more to that message I wasn't getting?

He was trying to use '[a-z]{2,2}', which doesn't work in PostgreSQL.

Regards,
Manuel.



Re: Regular expression problem

From
"scott.marlowe"
Date:
On 24 Oct 2003, Manuel Sugawara wrote:

> "scott.marlowe" <scott.marlowe@ihs.com> writes:
> 
> > It certainly seems to work in Postgresql 7.4 beta 4:
> > 
> > create table test2 (info text);
> > CREATE TABLE
> > insert into test2 values ('ab');
> > INSERT 109169538 1
> > insert into test2 values ('abc');
> > INSERT 109169539 1
> > 
> > marl8412=# select * from test2 where info ~ '^[a-z]{2}$';
> >  info
> > ------
> >  ab
> > 
> > Or was there more to that message I wasn't getting?
> 
> He was trying to use '[a-z]{2,2}', which doesn't work in PostgreSQL.

Oh, ok.  Thanks.



Re: Regular expression problem

From
Jeff Eckermann
Date:
7.4 uses a completely new regex engine, so comparisons
with that will not be valid anyway.
Pre-7.4 regex behaviour is all documented:
Users Guide -> Functions & Operators -> Pattern
Matching

--- "scott.marlowe" <scott.marlowe@ihs.com> wrote:
> On 24 Oct 2003, Manuel Sugawara wrote:
> 
> > Matias Surdi <matiass@interlap.com.ar> writes:
> > 
> > > Manuel Sugawara wrote:
> > > >Use something like '^[a-z]{2}$'
> > > 
> > > so, is this a bug????
> > 
> > No it is not. The sintax you are using is not
> supported.
> 
> It certainly seems to work in Postgresql 7.4 beta 4:
> 
> create table test2 (info text);
> CREATE TABLE
> insert into test2 values ('ab');
> INSERT 109169538 1
> insert into test2 values ('abc');
> INSERT 109169539 1
> 
> marl8412=# select * from test2 where info ~
> '^[a-z]{2}$';
>  info
> ------
>  ab
> 
> Or was there more to that message I wasn't getting?
> 
> 
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: you can get off all lists at once with the
> unregister command
>     (send "unregister YourEmailAddressHere" to
majordomo@postgresql.org)


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com