[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