[bcn-pm] Regex

Daniel Vidal de la Rubia dvrubia a gmail.com
dim abr 23 04:32:25 PDT 2013


2013/4/23 Sergio González Rodríguez <sergiogoro86 a gmail.com>
>
> Hola mongers!
>
> Tengo el siguiente archivo:
> >recoded    9765779-9766105
> 0220240040020020040020020020020040040220220240040040020040040020020000020040040020
> >2L_dmel-droEre 9765779-9766105
> AGTAAACCGGTGAAGTAACCAGTGCTATTGTACGTGCGCCTCAAGGGAGCCACGTTGGTGGTGAT
> >2L_dmel-droYak 9765779-9766105
> AGTAAACCGGTGAAGTAACCAGTGATATTATAAGTGCGCCTCAAGGGAGCCACGTTGGTGGTGAT
>
> Quiero guardar los números que están separados por "-" al final de la línea.
>
> Uso regex así:
> if ($_ =~ /(\d*-\d*)/) {
>     ($CDSstart, $CDSend) = split /-/, $1;
>     say "\$CDSstart<$CDSstart> \$CDSend<$CDSend>"
> }
>
> Pero, problema, la regex /(\d*-\d*)/
>     - Concuerda con "9765779-9766105"    #OK
>     - Pero también, con el "-" que está entre dmel-dro    #No quiero éste guión sin \d delante y detrás
>
> Adjunto una imagen, y un link a la misma, del vim donde indica que "hace match" en esos guiones:
> http://fotos.subefotos.com/54edf557ed336c42fe8455fc2d731350o.jpg
>
>
> Feliz día de Sant Jordi ;)
>
> --
> Sergio González
> Bioinformático && Biólogo marino
> http://about.me/sergiogoro
>
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm a pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org


Buenas,

Como se puede ver en http://perldoc.perl.org/perlre.html#Quantifiers
el cuantificador asterisco hace "match" si encuentra el elemento 0 o
más veces, si quieres asegurarte que ese elemento aparece *al menos*
una vez debes emplear el símbolo más '+'.

Por lo que la expresión debería quedar como: /(\d+-\d+)/)

Espero que te sirva :-),

Daniel


Més informació sobre la llista de correu Barcelona-pm