Thread: question about reg. expression

question about reg. expression

From
andrew1
Date:
hi all,

these return t:
select 'ab' ~ '[a-z]$'
select 'ab' ~ '^[a-z]'

select 'ab' ~ '^[a-z]$' returns f

Can't I use ^ and $ at the same time to match, in this case?
thanks.


Re: question about reg. expression

From
Samuel Gendler
Date:
I'd think you need to indicate multiple alphabetic matches.  Your first regex actually matches only b followed by end of string and the second is really only matching start of string followed by a.  The third is looking for a single character string.

Try this: select 'ab' ~ '^[a-z]+$'
or this: select 'ab' ~ '^[a-z]*$'

or if looking only for 2 character strings: select 'ab' ~ '^[a-z][a-z]$'

On Tue, Jan 18, 2011 at 3:41 PM, andrew1 <andrew1@mytrashmail.com> wrote:
hi all,

these return t:
select 'ab' ~ '[a-z]$'
select 'ab' ~ '^[a-z]'

select 'ab' ~ '^[a-z]$' returns f

Can't I use ^ and $ at the same time to match, in this case?
thanks.

--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Re: question about reg. expression

From
Stephen Belcher
Date:
Another way to match multiple occurrences is to use curly brackets with a number, like:
select 'ab' ~ '^[a-z]{2}$';

It can be done with a range of numbers as well:
select 'ab' ~ '^[a-z]{2,4}$';
select 'abab' ~ '^[a-z]{2,4}$';

I believe, however, that the curly brackets notation was introduced in 9.0 and is not available in earlier versions.

--Stephen

On Wed, Jan 19, 2011 at 5:21 AM, Samuel Gendler <sgendler@ideasculptor.com> wrote:
I'd think you need to indicate multiple alphabetic matches.  Your first regex actually matches only b followed by end of string and the second is really only matching start of string followed by a.  The third is looking for a single character string.

Try this: select 'ab' ~ '^[a-z]+$'
or this: select 'ab' ~ '^[a-z]*$'

or if looking only for 2 character strings: select 'ab' ~ '^[a-z][a-z]$'


On Tue, Jan 18, 2011 at 3:41 PM, andrew1 <andrew1@mytrashmail.com> wrote:
hi all,

these return t:
select 'ab' ~ '[a-z]$'
select 'ab' ~ '^[a-z]'

select 'ab' ~ '^[a-z]$' returns f

Can't I use ^ and $ at the same time to match, in this case?
thanks.

--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql


Re: question about reg. expression

From
Kenneth Marshall
Date:
On Wed, Jan 19, 2011 at 08:17:50AM -0500, Stephen Belcher wrote:
> Another way to match multiple occurrences is to use curly brackets with a
> number, like:
> select 'ab' ~ '^[a-z]{2}$';
> 
> It can be done with a range of numbers as well:
> select 'ab' ~ '^[a-z]{2,4}$';
> select 'abab' ~ '^[a-z]{2,4}$';
> 
> I believe, however, that the curly brackets notation was introduced in 9.0
> and is not available in earlier versions.
> 
> --Stephen
> 

That is not so. POSIX regular expressions, including the curly backet
notation, are available in all current supported releases of PostgreSQL:

http://www.postgresql.org/docs/8.2/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP

I did not bother to check our local documentation for earlier releases
as to how much earlier such support was available.

Cheers,
Ken


Re: question about reg. expression

From
Jasen Betts
Date:
On 2011-01-18, andrew1 <andrew1@mytrashmail.com> wrote:
> hi all,
>
> these return t:
> select 'ab' ~ '[a-z]$'

this matches the b and the end of the string

> select 'ab' ~ '^[a-z]'

this matches the start of the string and the a

> select 'ab' ~ '^[a-z]$' returns f

> Can't I use ^ and $ at the same time to match, in this case?
> thanks.

the above expression only succeeds if the string is one character long

use '+' '*' or '{2}' etc after the '[a-z]' to allow it to match several letters

or use '^[a-z]|[a-z]$' to match any sting that starts or ends with a
letter.

what are you trying to find?




-- 
⚂⚃ 100% natural