• Publicidad

Duda con reg exp

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Duda con reg exp

Notapor newperlero » 2011-08-25 04:01 @209

Hola, estoy haciendo una expresión regular, pero no consigo tenerla funcionando:

Por una parte en un fichero tengo un fichero conformado así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
linea6666
7-7-7
777--7777-777
7-----------------77777B--------------7777777
A1234-------7------6
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Lo que necesito es capturar las lineas que empiecen por números o letras mayúsculas (cualquier cantidad de ellos), que después tengan un '-' o varios, que después tengan un número o varios, después guiones y después uno o más números. De momento lo que tengo hecho es esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open FILE, q[<], 'fi.txt' or die "$!";
  2. while (my $linea=<FILE>){
  3.         chomp($linea);
  4.         if ($linea =~ /^(\d|[A-Z])+(-*)+(\d+)?-(\d+)/){
  5.                 print "$linea matchea\n";
  6.         }
  7. }
  8. close FILE;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Y no me está funcionando porque me imprime esta línea: 7-----------------77777B--------------7777777 matchea

¿Me podéis echar una mano?
newperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2011-07-15 06:38 @318

Publicidad

Re: Duda con reg exp

Notapor explorer » 2011-08-25 05:27 @269

Creo que es esta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $linea =~ /           # Lo que necesito es capturar las lineas
  2.           ^           # que empiecen
  3.           [A-Z0-9]+   # por números o letras mayúsculas (cualquier cantidad de ellos),
  4.           -+          # que después tengan un '-' o varios,
  5.           \d+         # que después tengan un número o varios,
  6.           -+          # después guiones
  7.           \d+         # y después uno o más números
  8. /x
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Duda con reg exp

Notapor newperlero » 2011-08-25 05:54 @287

Eres un artista, ¡funciona perfecto!

Estoy leyendo Mastering Regular Expressions, pero no termino de comprender las bases. Tengo una idea muy ligera de cómo hacer las cosas, pero siempre me acabo atascando. Por ejemplo, estaba declarando todo como grupos de captura con () en la expresión. No tengo claro cómo hacer las cosas...

¿Sabes de algún recurso en español para aprender sobre esto?
(Aparte de perlenespanol, claro :D )

Gracias por la solución, ¡y más por la explicación!
newperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2011-07-15 06:38 @318

Re: Duda con reg exp

Notapor explorer » 2011-08-25 06:16 @302

Aparte de la Wikipedia, no conozco ningún otro recurso en español sobre las expresiones regulares, pero si buscas por Internet, te salen un montón. Quizás no sean específicos de Perl, sino para otros lenguajes, pero no importa: las exp. reg. de los demás lenguajes están basados en los de Perl (y de hecho, Perl tiene mayor soporte).

Debes tener paciencia: las exp. reg. son, en sí mismas, un lenguaje propio, así que cuesta aprender a manejarlas lo mismo que para otros lenguajes informáticos.

Enrique y yo estamos traduciendo la documentación de perldoc, pero aún me falta un poco para terminar perlre.pod.

En la documentación de Perl, en tu propio ordenador, dispones de la siguiente documentación:

  • Guías:
    • perlrequick - Introducción rápida a las exp. reg.
    • perlretut - Guía de uso de las exp. reg.
    • perlfaq6 - Preguntas frecuentes sobre las exp. reg.
  • Manuales de referencia:
    • perlop - Referencia de los operadores de Perl. Ver la sección Regexp Quote-Like Operators
    • perlre - Exp. reg. de Perl, el resto de la historia
    • perlrebackslash - Exp. reg. de Perl, secuencias de escape
    • perlrecharclass - Exp. reg. de Perl, clases de caracteres
    • perlreref - Exp. reg. de Perl, referencia rápida
  • Información técnica:
    • perlreapi - Interfaz con las exp. reg. de Perl
    • perlreguts - Funcionamiento del motor de exp. reg. de Perl
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados