• Publicidad

Expresión regular para 10 dígitos

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

Expresión regular para 10 dígitos

Notapor BigBear » 2012-07-23 12:49 @576

¿ Alguien me podría decir cómo una expresión regular para sacar de un variable $text todo lo que tenga 10 dígitos y mostrarlo por pantalla ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Expresión regular para 10 dígitos

Notapor explorer » 2012-07-23 13:00 @583

¿Dónde están esas lecciones de expresiones regulares, Doddy?
Ni yo ni este foro estaremos aquí para siempre ;)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $text = "123 23 423 41 2345 235 235 2354 2387642365423 1234567890 32 424 234987 3498723 4 1234567890";
  2. 1 while $text =~ m(\b (\d{10}) \b (??{{ say $1 }}))gx;
Coloreado en 0.002 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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Expresión regular para 10 dígitos

Notapor BigBear » 2012-07-23 13:03 @585

¡ja,ja! Espero que dures unos 5 años más antes de que te jubiles o clonarte a una versión joven (20 años menos) xDD.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Expresión regular para 10 dígitos

Notapor reLlene » 2012-07-29 22:35 @982

Más de una persona (me incluyo) se lamentará cuando explorer tenga que abandonar este preciado mundo; esperemos que sea después que nosotros ¡ja,ja!

Por cierto... hay demasiado ofuscamiento en el código o al menos ante mis ojos ¡je,je! Me refiero a esta parte:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. 1 while $text =~ m(\b (\d{10}) \b (??{{ say $1 }}))gx;
  2.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Vale, la meta-secuencia \d está claro porque hablamos de dígitos y el límite de 10 entre los paréntesis, el delimitador m también me cierra pero del resto no me entero :(
Sexo : unzip ; strip ; touch ; grep ; finger ;mount ; fsck ; more ; yes ; umount ; sleep.
Avatar de Usuario
reLlene
Perlero nuevo
Perlero nuevo
 
Mensajes: 97
Registrado: 2012-06-04 07:16 @344

Re: Expresión regular para 10 dígitos

Notapor explorer » 2012-07-30 09:53 @454

Bueno, sí que está el código algo comprimido.

Se trata de un bucle while() que ejecuta la expresión '1', es decir, que no hace nada más que lo que ocurre dentro de la expresión de condición del propio while().

Más información en la sección Instrucciones compuestas de perlsyn.

La condición es una expresión regular, que confronta el contenido de la variable $text con la concordancia con un patrón, de forma repetida (/g). Además, la concordancia ignorará los espacios en blanco que contenga el patrón (/x). Así, será más fácil de entender.

El patrón trata de localizar la posición de diez dígitos (\d{10}), rodeados por límites de palabra (\b) En caso de encontrarlos, los capturará con la pareja de paréntesis (()). Además, ejecutará el código ((??{{ ... }})) que sigue, que lo que hace es sacar a pantalla el valor de lo capturado en el primer par de paréntesis: say $1.

Más información en perlre.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
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 21 invitados