Duda con expresiones regulares (SOLUCIONADO)

Imagen de Sumika
0 puntos

Hola a todos:

He estado leyendo sobre expresiones regulares, y en un momento dado se comentaba que era mejor usar la expresión *? que usar solo * a la hora de realizar una búsqueda, pero no dejaba muy claro que ventajas aporta usar una expresión frente a la otra, además comenta que los resultados obtenidos con ambas expresiones pueden ser distintos, ¿Sabe alguien porque es mejor una expresión que la otra?, ¿Es cierto que se pueden obtener resultados distintos?

Gracias, saludos

Imagen de razaAztk
+1
0
-1

................ y cuál fue la solución?
No seas mala onda, comparte el conocimiento.

Saludos!

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de cousteau
+1
0
-1

Bueno, por si a alguien le interesa, lo explico yo.

.* es un comodín "codicioso" (greedy). La expresión intentará hacer coincidir tantos caracteres como pueda, que en este caso son todos. Así, si se hace coincidir "Esto <b>es</b> Esparta" con la regex /<.*>/, el .* intentará hacer coincidir todos los caracteres posibles, es decir, "b>es</b> Esparta", y al ver que el ">" de después no coincide, rebobinará hasta que coincida. Al final la regex hará coincidir "<b>es</b>".

.*? es un comodín "vago" (lazy), que sólo coincidirá mientras lo que le sigue no coincida. Así, sólo coincidirá "b" y al llegar a ">" dejará de buscar, con lo que la coincidencia se encuentra antes y además si luego quieres hacer algo con el resultado (por ejemplo resaltarlo con grep --color), probablemente te interese esto. Nótese que "*?" es una extensión que no todas las variantes de regex interpretan (funciona en Perl, Python, grep -P, sed -r).

Otra forma más "portable" de hacer esto es usar algo como /<[^>]*>/, donde "[^>]" coincidirá con todos los caracteres menos ">".

+1
0
-1

«E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem» significa que dpkg se ha interrumpido y que tienes que ejecutar "sudo dpkg --configure -a" para corregir el problema.
Imagen de razaAztk
+1
0
-1

Oooo!

Interesante información. Hace tiempo tuve un problema con expresiones regulares, y haber sabido esto me hubiese ahorrado dolores de cabeza, jejeje. Aunque mejor tarde, que nunca.

Gracias por la explicación.

Saludos!

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}