[caracas-pm] Expresión regular between

Lenin Hernández leninmhs at gmail.com
Thu Jul 12 13:04:11 PDT 2012


> Si quieres capturar los paréntesis usa:
>
> $cadena=~ m/.*?(\(.*?\)\).*?/;
Daba:
Unmatched ( in regex; marked by <-- HERE in m/.*?( <-- HERE
\(.*?\)\).*?/ at recorre.pl line 42.

un / estaba de mas quedando así:
$campo[2]=~ m/.*?(\(.*?\)).*?/;
Funciono correctamente capturando (xyz123) incluyendo los paréntesis

Ciertamente el truco estaba en el escape de paréntesis para que los
tomara como texto y no como una agrupación de RE de perl
cayendo en cuenta y entendiendo mejor como lo estaba haciendo
lo deje así:
$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)

y  para sacarlo (xyz123) de la cadena original use:
$cadena =~ s/\(.*\)//;
quedando cadena entonces: "perl monger caracas"


Gracias por la información y tiempo


Saludos!!




-- 
Lenin Hernández
Twitter: @leninmhs
2.6.32 on Debian Wheezy
CUCLUG.: "no hay nada mejor, que hacer lo que realmente te gusta".
Linus Tordvalds.: "If it compiles, it is good, if it boots up it is perfect".


More information about the caracas-pm mailing list