Re: Substring y expresiones regulares

From: Francisco Olarte <folarte(at)peoplecall(dot)com>
To: baru gerardi <soybaru(at)gmail(dot)com>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Substring y expresiones regulares
Date: 2017-03-23 17:03:36
Message-ID: CA+bJJbzNFgDyE9Zr7aChYs3OMxHt=yFk-zcA3dUDTWJQc219Ag@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2017-03-23 17:13 GMT+01:00 baru gerardi <soybaru(at)gmail(dot)com>:
> Buenos dias
> Necesito extraer de un campo de texto los nros de DNI contenidos en él.
> Sé que los mismos se encuentran luego de la cadena 'DNI:'
> Con substring(texto from 'DNI:') ubico la cadena
> pero necesito que liste de ahí en adelante los nros que encuentre, teniendo
> en cuenta:
> 1. que desconozco cuantos espacios hay entre 'DNI:' y el primer dígito y
> 2. que puede haber puntos entre los dígitos

Esa es la tipica tarea para expresiones regulares.

Por desgracia tambien es un problema poco especificado.

Suponiendo que lo que quieres es buscar -
- "DNI:"
- seguido por un numero indeterminado de espacios.
- seguido por una cadena de digitos que puede tener puntos de
separacion en medio.
( y no dices nada de la letra, si son españoles ultimamante la tienen )

Solo con lo de los digitos y puntos:

select x, regexp_matches(x, 'DNI:\s*(\d+(?:\.\d+)*)') from
regexp_split_to_table('malo/xx DNI: 12 22/yy DNI:12.22.33 zz','/') as
t(x);
x | regexp_matches
--------------------+----------------
xx DNI: 12 22 | {12}
yy DNI:12.22.33 zz | {12.22.33}
(2 rows)

Que puede ser lo que quieres o no, pero de ahi puedes elaborar. En la
regexp que hay tenemos, por partes:

DNI: - busca eso
\s* un numero indeterminado (*) de espacios.
( capturamos
\d+ uno o mas (+) digitos (\d) opcionales
(?: mas una sub-secuencia compuesta por
\. Un punto ( el punto a secas es un comodin )
\d+ y digitos
)* fin de subsecuencia, repetida un numero indeterminado de veces.
) fin de captura.

Francisco Olarte.

>
> Desde ya, gracias por la ayuda
> Saludos
> Baru
>
>
>
> --
> lo que está y no se usa nos fulminará

-
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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Francisco Olarte 2017-03-23 18:16:05 Re: Substring y expresiones regulares
Previous Message Gerardo Herzig 2017-03-23 16:57:46 Re: Substring y expresiones regulares