Re: Substring y expresiones regulares

From: Francisco Olarte <folarte(at)peoplecall(dot)com>
To: baru gerardi <soybaru(at)gmail(dot)com>
Cc: Hellmuth Vargas <hivs77(at)gmail(dot)com>, Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Substring y expresiones regulares
Date: 2017-03-24 14:50:37
Message-ID: CA+bJJbw9OSbq99dquaTVDjHTDyZ5TRq0ifR7HFUeq0Fv-DSYbA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Baru:

2017-03-24 14:12 GMT+01:00 baru gerardi <soybaru(at)gmail(dot)com>:
> Soy novato y miraré en detalle las respuestas para aprender.

Mira tambien los manuales. Yo personalmente recomiendo el original,
que es un ingles muy asequible sobre todo en la parte de referencias
de funciones.

> Si me permiten, una pregunta mas
> Exista alguna manera dentro del substring como para posicionarme
> en la cadena de texto con una subcadena y de ahi tomar un desplazamiento?
> Disculpen el invento, pero imagino algo del tipo
> substring(texto, 'DNI:', n)

De ahi lo de leer el manual, en la pagina donde describe el substring
te cuenta, justo debajo de la variante de substring con indices
numericos:

substring(string from pattern) text Extract substring matching POSIX
regular expression. See Section 9.7 for more information on pattern
matching.

De ahi, viendo el ejemplo, puedes hacer substring(texto from
'DNI:.........') ( con n puntos, o si lo prefieres mira los
cuantificadores en la referencia de los pattern ).

No solo eso, sino que justo encima del substring clasico con enteros
(substring(string [from int] [for int]) tienes la function
position(substring in string). De esas puedes sacar la solucion
clasica para lo que quieres ( en muchos lenguajes no tienes la que
quieres, pero tienes una que busca y otra que corta ). Vamos, divide
et impera:

$ select position('DNI:' in 'TEL:22 DNI:123456789 AGE:66');
position
----------
8
(1 row)

$ select substring('TEL:22 DNI:123456789 AGE:66' from position('DNI:'
in 'TEL:22 DNI:123456789 AGE:66')+4 for 8);
substring
-----------
12345678
(1 row)

$ select substring('TEL:22 DNI:123456789 AGE:66' from position('DNI:'
in 'TEL:22 DNI:123456789 AGE:66')+char_length('DNI:') for 8);
substring
-----------
12345678
(1 row)

( La ultima es para que veas como podrias meterlo todo en una funcion )

> Algo asi de sencillo resolveria mi problema, que es muy básico

Complicado no es, es mas o menos lo mismo que en los lenguajes mas normales.

Francisco Olarte.

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message baru gerardi 2017-03-27 17:50:39 Re: Substring y expresiones regulares
Previous Message baru gerardi 2017-03-24 13:12:40 Re: Substring y expresiones regulares