Búsqueda de expresiones en una secuencia
Publicado: 2009-08-18 14:48 @658
Tengo que hacer un programa que dada una secuencia busque si contiene una expresión que es introducida por el usuario desde teclado. Se tiene que obtener también la posición de inicio y final de esa expresión en la secuencia cada vez que aparezca esa expresión.
Tengo el siguiente código
si se busca "CTF" se obtiene:
NO obtengo la posición de inicio de la expresión CTF si no la posición justo anterior a la letra C.
Y si la expresión a buscar es "CT(F){3,}" [CT seguido de 3 o más F] no obtengo nada
¿¿Cómo podría solucionar este problema??
Tengo el siguiente código
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- use strict;
- use warnings;
- my $sec = 'SXRDCTFFFFFYVGUBHNJKLFVNLAISUBNLASDIUV
- ÑSDVFNÑASNVÑAJSDBNÑFOIVABNÑSDFVBGÑASOI
- OUIBHVDUIOAEIRVCTFFFFFFFFFBIÑSDAUBGPEWIUBVÑWEOPINGVÑER
- EOVUNHOWUIGNÑVWUvÑBNVPIUWBNVIPUWBPIVÑBN
- DUIVOWPIER';
- my $expr;
- do {
- print "Introduzca la expresión regular a buscar: ";
- $expr = <STDIN>;
- chomp $expr;
- if ($sec =~ /$expr/) {
- my $inicio = index ($sec,$expr);
- while ($inicio != -1){
- my $fin = $inicio + length($expr);
- print "$inicio\t$fin\t$expr\n";
- my $contador = $inicio + length($expr);
- $inicio = index ($sec,$expr,$contador);
- }
- } else {
- print "No aparece\n";
- }
- }until ($expr =~ /^\s*$/);
- # exit the program
- exit;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
si se busca "CTF" se obtiene:
Using text Syntax Highlighting
Introduzca la expresión regular: CTF
4 7 CTF
99 102 CTF
4 7 CTF
99 102 CTF
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
NO obtengo la posición de inicio de la expresión CTF si no la posición justo anterior a la letra C.
Y si la expresión a buscar es "CT(F){3,}" [CT seguido de 3 o más F] no obtengo nada
¿¿Cómo podría solucionar este problema??