[caracas-pm] Expresión regular between

Luis Muñoz lem at itverx.com.ve
Thu Jul 12 13:28:21 PDT 2012


On Jul 12, 2012, at 4:04 PM, Lenin Hernández wrote:

> $cadena =~ m/(\(.*\))/;
> que me retorna igualmente  (xyz123)
> 
> el *? si me consumía prácticamente el 100% del procesador hice la
> prueba con time
> 
> usando *? = real	0m6.583s
> y usando solo * =  real	0m6.130s
> (60mil lineas usando equipo modesto)

Si quieres ser más rápido, haz esto

$cadena =~ m{(\([^\)]*\))};

En un regexp, '.' hace match con cualquier caracter. Esto significa que el motor de expresiones regulares va a consumir toda la entrada hasta el final y luego, comenzará a "echar para atrás" (backtracking) hasta que encuentre el ')'. Usando la construcción que mostré más arriba, el motor de expresiones regulares va a consumir la entrada mientras no encuentre el ')'. Si tienes mucho texto después de lo que estás buscando, esta opción va a ser la mejor.

Saludos

-lem



More information about the caracas-pm mailing list