Skip site navigation (1) Skip section navigation (2)

Re: duda de expresiones regulares

From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: "Toni Casueps" <casueps(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: duda de expresiones regulares
Date: 2008-01-31 12:02:32
Message-ID: 95335e4e0801310402h5e391c2dyc9f3f283ef7d7059@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
El 31/01/08, Toni Casueps <casueps(at)hotmail(dot)com> escribió:
>
> No me funciona el operador ? en expresiones regulares. Se supone que el carácter anterior al signo ? puede aparecer o no en la cadena, pero cuando lo uso nunca casa la expresión regular. Por ejemplo:
>
>  select 'ABC' similar to 'AB?C';
>  select 'AC' similar to 'AB?C';

Según el manual:
http://www.postgresql.org/docs/8.2/static/functions-matching.html#FUNCTIONS-SIMILARTO-REGEXP
Notice that bounded repetition (? and {...}) are not provided, though
they exist in POSIX. Also, the dot (.) is not a metacharacter.
Es decir, que la interrogación se toma LITERALMENTE como el carácter '?'.


>
> Segun lo entiendo yo, eso significa que puede haber 'B' o no haberla, pero la comparacion devuelve False en ambas. En cambio sí funcionan:

>
>  select 'ABC' similar to 'AB*C';
>  select 'AC' similar to 'AB*C';
>
> Pero esta expresión regular casaría con 'ABBC', 'ABBBC', etc, y eso no me vale.
> ¿Puede ser un error de Postgres?

No, o al menos es el comportamiento documentado. Si quieres puedes usar
expresiones regulares POSIX:
select 'ABC' ~ 'AB?C';
o incluso
select 'ABC' ~ '^AB?C$';

Saludos
-- 
Miguel Rodríguez Penabad

In response to

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2008-01-31 12:07:43
Subject: Re: El API pgsql en C
Previous:From: Toni CasuepsDate: 2008-01-31 11:51:11
Subject: duda de expresiones regulares

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group