zor

  • mail


blanco
negro
Al azar

  • incoherencia 9





01020304050607080910111213141516171819202122232425262728293031<< mayo >> << 2006 >>

MAY
04
Ayuda con regexp
04 de May de 2006 a las 05:03| Archivado en Tecnico
Escuchando: Ni idea | Animo: braindead

Necesito ayuda con una expresion regular.

A ver si entre los lectores hay alguna mente que consiga sacar esto, que no puede ser tan dificil.

Necesito una expresion regular que pille todas las cadenas patata que no esten dentro de un tag html.

Por ejemplo en el siguiente texto:


las patatas
que bellas las <b>patatas</b>
Esta es una imagen de una: <img src="patata.gif" />


Pues la expresion regular deberia pillar las dos primeras cadenas patata, pero no la que esta dentro del IMG.

A ver si alguien lo consigue :)
Por zor Comentarios [12] | Añadir comentario
Nombre:
Mail:
Web:
Notificarme si me responden.

mrithailweb | 2006-05-04 08:50:57
mete una variable en la que indiques si estás dentro de un tag html o no... es decir, una variable que cuando encuentres un "", y que cuando lo encuentre se ponga la variable a 1, y entonces siga analizando el array de caracteres... no se, es sólo meter un if a la función que ya tengas para buscar patatas.

si quieres puedo hacerte también la función que te busque "patata", pero me da un poco de pereza (además, te la haría en c/c++, que no creo que te sirva demasiado)

tu dirás ^^
Responder

mrithailweb | 2006-05-04 08:53:19
joder, esto se ha comido el "mayor que", el "menor que" y todo lo que había entre medias... así que te lo vuelvo a poner xDDDDDD

mete una variable en la que indiques si estás dentro de un tag html o no... es decir, una variable que cuando encuentres un "menor que" se ponga a 0 y el programa deje de buscar "patata" para buscar un "mayor que", y que cuando lo encuentre se ponga la variable a 1, y entonces siga analizando el array de caracteres... no se, es sólo meter un if a la función que ya tengas para buscar patatas
Responder

vins2006-05-04 09:41:37
eso en una expresion regular no puedes hacerlo. necesitas, al menos, dos. una expresion regular para quedarte con todo lo que no sean tags, y otra para buscar "patata" en el resto.
Responder

voetweb | 2006-05-04 12:03:09
eso de buscar los tags < y > es una cerdada, ya que simplemente un < dentro de un if de javascript lo jode todo.

yo recorrería el árbol del documento y buscaría patata en los elementos pertinentes. ahora mismo estoy en el curro y no te lo puedo mirar con detalle, pero cuando llegue a casa te lo miro porque creo que algo parecido hice alguna vez.
Responder

voetweb | 2006-05-04 12:50:08
function patatanodo(nodo)
{
for(i=0;i
Responder

voetweb | 2006-05-04 12:51:48
vaya, mierda, me ha cortado por el símbolo de menor... ahora lo arreglo:

function patatanodo(nodo)
{
for(i=0;i *menorque* nodo.childNodes.length;i++)
{
nodito=nodo.childNodes[i];
if(nodito.nodeValue!=null)
if(nodito.nodeValue.indexOf("patata")!=-1)
alert(nodito.nodeValue);

if(nodito.firstChild) patatanodo(nodito);
}
}

y se dispara algo así como con onload="patatanodo(document.body)" en el body
Responder

zorweb | 2006-05-04 13:01:56
Efectivamente, vins tiene razon. He utilizado un preg_match_all de php para separar tags y no tags, luego he utilizado otra expresion regular sobre el array de no tags para cambiar las cadenas patata y leugo he reconstruido el resultado arrejuntando los arrays.

Gracias a todos!
Responder

meri2006-05-04 14:43:52
que raro hablais los programadores....
Responder

voetweb | 2006-05-05 14:39:09
http://www.youtube.com/watch?v=w4_BmKu1Y6o

esti como pa ti
Responder

Akhnaweb | 2006-05-05 19:23:25
Yo quiero un traje como el del video!
Responder

voetweb | 2006-05-05 20:32:00
señores, me despido por una temporada que me mudo definitivamente a mi nueva casa y voy a estar sin internete una temporada. mails los veré en el curro. hasta la próxima.
Responder

Zorweb | 2006-05-05 22:13:45
Yo quiero ruedas en todas partes! envidia! Esto si me mola y no la gotimochila draconiana :)

Voet, se te va a echar mucho de menos! Espero que te reconectes pronto. Voy a hacerme el tilt-shift con un desatascador para la camara!
Responder