Re: Filtrar expresion regular entre rangos especificos

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Rusel Fichi <rdfs(dot)ing(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Filtrar expresion regular entre rangos especificos
Date: 2015-07-09 22:50:49
Message-ID: 20150709225049.GY3289@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Rusel Fichi escribió:

> Ejemplo de la URL:
>
>
> <a href="
> http://dominio/noticia/21618-errores-del-mp-obligaron-a-la-justicia-a-descartar-algunos-casos-de-delitos-cambiarios">Ejemplo
> Noticia</a>
>
> En este caso debemos eliminar unicamente el id del enlace dentro de la
> etiqueta <a>

Si quieres ocultar información sobre tu dominio, no deberías dar un
título que se pueda buscar fácilmente en un buscador web ...

> Use:
>
> update article_article set content = regexp_replace(content,
> '1|2|3|4|5|6|7|8|9|0', '', 'g') WHERE position('item/' in content) > 0 and
> position('-' in content) > 1

Huy, eso no se ve nada bien.

> Hay forma de definir una rango de busqueda dentro del campo para reemplazar
> o eliminar un string o numero determinado? Como por ejemplo definir el
> rango de busqueda entre la etiqueta <a></a>

Meh.

Podrías agregar el <a> ... </a> en la expresión regular, pero ¿qué pasa
si el <a> está en una línea, el enlace en otra, y el </a> en una tercera
línea? Tu sistema no funcionaría para nada. Es más, aunque consigas
solucionar ese problema, cambiar los links dentro del HTML de
contrapunto.com no va a corregir los links que pueda haber en terceras
partes hacia tu sitio, como por ejemplo un tal www.google.com.

Realmente la única solución que parece razonable a este problema es usar
"redirects" en tu servidor web, y dejarlos permanentes. Por ejemplo, en
postgresql.org antes los links al archivo web de listas de correo eran

http://archives.postgresql.org/<nombre-de-lista>/<año-mes>/msgNNNNNN.php
y ahora son
http://archives.postgresql.org/message-id/fCAMiTfwLX6A6ud-e8MbvdsUmNoKwwc4sEjRvmmwmyPcE+LSuS1g@mail.gmail.com

¿Qué se hizo para preservar la funcionalidad de los links antiguos?
Simple: se creó una tabla en la base de datos con dos columnas, una de
ellas es <nombre-de-lista>/<año-mes>/msnNNNNN.php (o sea la dirección
antigua) y la otra columna es el message-id. Cuando se recibe un HTTP
GET para URLs del estilo antiguo, se busca en esa tabla el message-id
correspondiente y se hace un HTTP redirect. Problema solucionado. La
tabla tiene varios miles de URLs, pero hey, tenemos un sistema de
almacenamiento de datos súper efectivo que podemos usar ...

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Anthony Sotolongo 2015-07-13 14:01:09 duda sobre pgpool
Previous Message Rusel Fichi 2015-07-09 21:58:32 Filtrar expresion regular entre rangos especificos