Ver Mensaje Individual
  #16 (permalink)  
Antiguo 15/01/2010, 15:15
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Encontrar etiquetas html, class y id's (con expresiones regulares)

Cita:
Iniciado por pateketrueke Ver Mensaje
lo que sucede es que la negación no funciona de ese modo... ya que al usar corchetes se dice que se niega algún carácter contenido en el conjunto...

vamos, que no se pueden negar frases completas de esa manera...

te sugiero ahondar mas en tu lectura de expresiones regulares, no mas... ;)


o bien, fácilmente puedes iterar tu lista de tags y omitir algunos específicamente usando lógica if-then-else
pateketrueke me gustaría hacerlo con expresiones regulares.
He leido más de una veintena de páginas que hablaban de expresiones regulares y no he visto la forma de conseguir excluir tags como meta o title en mi patrón

Código PHP:
preg_match_all('/<(\w+)[^>]*\/?>/',$html,$matches); 
Lo he probado de mil formas distintas sin lograrlo, algunas de ellas...

Código PHP:
Ver original
  1. preg_match_all('/<[^meta](\w+)[^>]*\/?>/',$html,$matches);
  2. preg_match_all('/<([^meta]\w+)[^>]*\/?>/',$html,$matches);
  3. preg_match_all('/<([^meta])(\w+)[^>]*\/?>/',$html,$matches);
  4. preg_match_all('/<([^meta])?(\w+)[^>]*\/?>/',$html,$matches);
  5. preg_match_all('/<(^[^meta])?(\w+)[^>]*\/?>/',$html,$matches);

¿Me puedes decir donde aparece un ejemplo similar? no he sido capaz de encontrar ninguno que niegue como necesito.

¿O alguien puede decirme como conseguirlo?

Muchas gracias de antemano!

Edito:
Tampoco he sido capaz con esta chuleta, la clave está ahí?!

(?:) No captura subpatron - ((?:foo|fu)bar) captura foobar o fubar sin que foo o fu se capture como subpatron
(?=) Mirar adelante - foo(?=bar) captura foo cuando es seguido de bar
(?!) Mirar adelante (negativa) - foo(?!bar) captura foo cuando NO es seguido de bar
(?<=) Mirar atras - (?<=foo)bar captura bar cuando es precedido de foo
(?<!) Mirar atras (negativa) - (?<!foo)bar captura bar cuando NO es precedido de foo
(?>) Al menos el subpatron - (?>\d+)bar captura aun cuando bar NO esta presente
(?(x)) Condicionales de subpatron - (?(3)foo|fu)bar captura foo si el 3er subpatron se capturo, fu si no
(?#) Comentario - (?# el patron hace x y o z)

Última edición por neodani; 15/01/2010 a las 15:21