Mostrando entradas con la etiqueta expresiones regulares. Mostrar todas las entradas
Mostrando entradas con la etiqueta expresiones regulares. Mostrar todas las entradas

sábado, 23 de abril de 2011

Replace All en Javascript

En ocasiones cuando trabajamos con Javascript, es necesario buscar una cadena de texto y sustituirla por otra.

El API de javascript tiene una función, para los objetos de tipo cadena de texto (String) replace, pero ésta solo sustituye la primera ocurrencia que encuentra.

Así, si tenemos el texto "primero;segundo;tercero" (campos separados por ;, típico cuando trabajamos con ficheros en formato CSV), y con javascript queremos sustituir el separador ; por el separador ',', el siguiente código no funcionará:

"primero;segundo;tercero".replace(";",",")

Pues devolverá el siguiente resultado:
"primero,segundo;tercero" (es decir, solo sustituirá la primera ocurrencia).

Podemos conseguir sustituir todas las ocurrencias del texto a cambiar haciendo uso de expresiones regulares, en concreto de la expresión /textoAcambiar/g (el /g le indica al motor de sustitución basado en expresiones regulares que busque todas las ocurrencias).

Si el texto a sustituir está en una variable javascript, el código a emplear sería el siguiente:


var separator = ";";
var re = new RegExp(separator, "g");
var textoNuevo = "primero;segundo;tercero".replace(re, ",");

jueves, 3 de diciembre de 2009

Extraer direcciones http de un texto con expresiones regulares

He desarrollado una aplicación, que algún día pienso liberar como software libre (cuando tenga una interfaz de usuario medio decente, que permita que cualquier usuario pueda utilizarla, y no ahora que no tiene interfaz gráfica y consiste en una serie de scripts) que permite monitorizar el estado de un determinado asunto o temática, extrayendo enlaces relacionados con éste de una de las principales redes sociales: Twitter. Teneis ejemplos de posts creados automáticamente con este software aquí.

¿Cómo funciona este programa? Supongamos que montáis una página sobre juegos y apuestas. Os gustaría ofrecer a vuestros lectores información candente sobre estos: apuestas on-line, peñas virtuales, lotería, bono-loto, casas de apuestas por internet, comisiones, etc. ¿Cómo lo haríais? ¿Buscando en Google?

Desde luego es una alternativa, pero mi programa lo que trata de hacer es explotar el auge de las Redes Sociales. Cuando una persona pone un enlace en una Red Social (ya sea a través de un post en twitter o en el muro de facebook, o con un social-bookmark de Del.icio.us), es porque éste enlace le ha parecido lo suficientemente bueno como para compartirlo. Digamos que pasa una primera criba: alguien lo ha leido y lo recomienda.

El primer paso para buscar enlaces relacionados con una materia es definir una lista de tópicos y palabras clave que representen esta materia: la base de datos de conocimiento. Ahora mismo esta base de conocimiento se crea mediante un fichero de texto plano. Ahí podeis incluir los tópicos que deseais monitorizar en la Web 2.0: apuestas, lotería, juegos on-line, poker, etc.

Seguidamente, el programa busca en las redes sociales por estos términos de búsqueda, analiza el texto, extrae enlaces, y construye un post con todos los enlaces localizados en relación con éste término de búsqueda.

El proceso de generación automática de posts lo he tenido paralizado un tiempo porque la expresión regular que utilizaba para extraer enlaces del texto de los tweets estaba fallando.

La expresión regular original era esta:

http://.*?$

Esta expresión regular estaba claramente incorrecta, porque si el proceso encontraba textos como el siguiente: "Enlace interesante en http://url.org sobre cualquier tema", al tratar de extraer el enlace obtenía algo así: "http://url.org sobre cualquier tema". Es decir, detectaba el principio del enlace, pero no el final.

Lo he conseguido arreglar sustituyendo la expresión regular anterior por esta otra:

http://[^\\s]+{1,}

Entraré en más detalle sobre expresiones regulares en posts sucesivos. Lo cierto es que ahora sí funciona el proceso.

Limpiar un Wordpress hackeado

 Check list para limpiar instancias de Wordpress que han sido hackeadas, y para prevenir hackeos. Para técnicos de sistemas con acceso SSH a...