Обсуждение: question about reg. expression
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.
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
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
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
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