- Código: Seleccionar todo
<etiqueta>aquí hay todo tipo de caracteres</etiqueta><etiqueta>aquí lo mismo</etiqueta>
Imaginaros que todo esto está en la misma línea. El problema viene cuando hago la siguiente expresión regular para extraer el texto que está entre las etiquetas:
Using perl Syntax Highlighting
Si pongo esto, lo que hace Perl es coger la primera etiqueta de apertura y la última de cierre.
Para aclararme, he hecho un programa superbásico de este tipo:
Using perl Syntax Highlighting
$texto="hola cereza holados hola plátano holados";
$_=~ s/hola(.+)holados/$1/g;
print $dolar=$1;
$_=~ s/hola(.+)holados/$1/g;
print $dolar=$1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y el resultado es de $1 es: cereza holados hola plátano,
o sea, lo que está entre el primer hola y el último holados.
En realidad es una duda de fundamentos de programación.
Según mi lógica, lo que Perl debería hacer al encontrarse una expresión regular de este tipo es ir leyendo carácter por carácter hasta toparse con el primer holados y ahí hacer pattern matching; y después, como le he puesto la g, debería seguir buscando este mismo patrón en el resto de la línea que todavía le quedaría por leer, a ver si lo encuentra.
Pero parece que el programa no razona así; no lo entiendo, ¿alguien me lo podría explicar, por favor?