Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2007, 13:56
Avatar de qwerty_wq
qwerty_wq
 
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 19 años, 3 meses
Puntos: 1
Duda con expresiones regulares

Hola a tod@s. Tengo un problema aparentemente muy simple pero al que no le he logrado dar solución. Quiero hacer algo parecido a un parser XML, pero sin usar el que trae PHP, empleando expresiones regulares. Así, por ejemplo, si quiero leer el contenido de una etiqueta:

<etiqueta>Contenido de la eqtiqueta</etiqueta>

Podría usar una sentencia similar a:

Código:
preg_match('/<etiqueta>([^<]+)<\/etiqueta>/', $fichero_xml, $res);
Ahora bien, ¿qué pasa si el contenido de la etiqueta es éste?:

<etiqueta>En este Universo 7 < 8 se cumple siempre</etiqueta>

Obviamente no me leerá el contenido correctamente, ya que encontrará un caracter '<' que limitará la expresión regular y hará que no se cumpla.

Mi pregunta es, ¿cómo se puede indicar en una expresión regular que NO aparezca una cadena? Es decir, sería algo así como excluir una clase mediante [^<] sólo que en lugar de caracteres excluir palabras o cadenas. Es decir, lo que quiero es leer el contenido de una etiqueta hasta que encuentre el cierre, pero explicitando la etiqueta de cierre en la expresión regular de preg_match.

No sé si me habré explicado

Un saludo y gracias de antemano a las posibles respuestas