Foros del Web » Programación para mayores de 30 ;) » RegExp »

Problema con expresiones regulares

Estas en el tema de Problema con expresiones regulares en el foro de RegExp en Foros del Web. Saludos foreros, Podrían ayudarme con una expresión regular, no tengo muchos conocimientos en esto, asi que agradecería si alguien me echa una mano. Lo que ...
  #1 (permalink)  
Antiguo 09/08/2013, 11:32
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años
Puntos: 0
Pregunta Problema con expresiones regulares

Saludos foreros,
Podrían ayudarme con una expresión regular, no tengo muchos conocimientos en esto, asi que agradecería si alguien me echa una mano.
Lo que busco es lo siguiente, supongamos que tengo el siguiente texto:
Código:
<p>1er Párrafo: texto de prueba</p>
<p>2do Párrafo: texto de prueba</p>
<p><br/></p>
<p>4to Párrafo: texto de prueba</p>
Lo que quiero es que si hay 2 párrafos que contengan algún texto y estén juntos sean separados por un <br/>, es decir si comparamos los 2 primeros párrafos: "<p>1er Párrafo: texto de prueba</p><p>2do Párrafo: texto de prueba</p>", debería quedar así: "<p>texto de prueba</p><p><br/></p><p>texto de prueba</p>".
En cambio si cogemos el 2do y 3er párrafo: no debería agregar nada, porque ya hay un "<p><br/></p>".

Ojala puedan ayudarme. Gracias
  #2 (permalink)  
Antiguo 09/08/2013, 17:17
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con expresiones regulares

No entiendo tu problema:

1º Estás en foro de php y veo html
2º ¿Expresiones regulares) ¿¿¿???
3º <p>xxx</p> ya se interlinean como párrafo, con un espacio que puede ser ampliado o reducido mediante css (o a gusto del navegador si no estás definido).

<br /> es un salto de linea que no tiene que ver con el interlineado de párrafos. (salto de línea no es interlineado)



Si <p><br/></p> cumple tus estectativas, copia y pega entre
<p>1er Párrafo: texto de prueba</p>
<p>2do Párrafo: texto de prueba</p>

  #3 (permalink)  
Antiguo 09/08/2013, 20:09
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: Problema con expresiones regulares

Y porque no usas la funcion explode() de php y verificas si existen dos "." puntos y concatenas los <br> o lo que quieras en caso que existan
  #4 (permalink)  
Antiguo 12/08/2013, 15:22
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema con expresiones regulares

A ver, primero para agradecerles por tomarse el tiempo de responder.

Creo q no me explique bien:

1.- Puse este post en la sección de PHP, porque uso la función "preg_replace(pattern, replacement, subject)", justamente donde yo pedía ayuda es en el "pattern" o patrón para poder hacer el cambio.

2.- Yo estoy usando un editor de texto (NicEdit.js), a veces los usuarios copian contenidos de algunas páginas web, pegan y guardan, hay veces que el contenido viene de la forma que les puse al inicio, lo que quisiera es poder ubicar donde hay un contenido de la forma : "<p>texto texto</p><p><br/></p>" y poder hacer cambios.

Como les comento, mi problema está en crear la forma del patrón para ubicar esos casos, he intentado generarlo pero no doy con la forma correcta.

Gracias.
  #5 (permalink)  
Antiguo 12/08/2013, 15:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con expresiones regulares

Te comento que hay un foro para expresiones regulares, aquí.

Y bueno, te podemos ayudar a construir la expresión mas no darte una expresión ya hecha para que no te molestes en pensar, ¿verdad?

Pero sólo si estás dispuesto a aprender RegExp, de otra forma sería un abuso de tu parte.

Podrías empezar por mostrarnos las expresiones que has escrito, chance y te vamos diciendo que estarías haciendo mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 12/08/2013, 17:15
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema con expresiones regulares

Ok, entiendo que debí postear ahí mi pregunta, gracias por la información.

Mi intención tampoco es de abusar del tiempo de ustedes, yo he estado viendo algunos patrones que me puedan servir, específicamente esto: (?!pattern).

Lo que busco es q me haga el match con aquellos párrafos continuos que solo contengan texto, en mi primer ejemplo debería hacer match con el 1er y 2do párrafo(porque entre el 2do y el tercero hay un <p><br/></p>), hago algo como esto:

/(?=<p>([a-z]+)[^<br\/>])(<p>[a-z]+[^<br\/>])/

pero no obtengo lo que busco.

Lo estoy probando en esta página que ayuda mucho para revisar las expresiones regulares: http://xrg.es/#1qzf2v1 (quizás les sirva)..

Muchas gracias.

Última edición por xtian87; 12/08/2013 a las 17:32
  #7 (permalink)  
Antiguo 12/08/2013, 18:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con expresiones regulares

Ahora que reviso, la expresión es de lo más fácil:
Cita:
/<\/p>\s*<p[^<>]*>/
Que significaría mas o menos "la etiqueta de cierre </p> seguido de espacios y/o saltos de linea, seguido de la etiqueta de apertura <p>".

Lo único que si veo mal es el reemplazo "<p><br /></p>" que parece sacado de Dreamweaver, y honestamente está horrible, yo lo cambiaría por "<br />" y nada más.

Otra cosa que me intriga es la forma de tu expresión, parece que no sabes ni lo que hace.

¿Estás consultando alguna referencia de RegExp?

Porque de verdad te hace falta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 12/08/2013 a las 18:45 Razón: errata

Etiquetas: expresiones, php, regulares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:10.