• Publicidad

Expresión regular compleja que solo capture 20 caracteres

¿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 compleja que solo capture 20 caracteres

Notapor Alfumao » 2013-09-26 03:30 @187

Hola a todos,

Tengo un problema curioso que resolver y que me está quitando el sueño. Necesito conseguir una expresión regular que capture solo 20 caracteres de estructuras como las siguientes.

>palabrasuperlarga_2_189137

/^>(\w+)/ -> Así capturo la palabra en $1, pero no limito el número de caracteres a 20

/^>[a-z0-9]{1,20}$/ -> Así no me funciona, y no le paso nada a $1, sino a $& (pero tampoco rescato nada en la variable)

/^>[a-z0-9]{20}$/ -> Así tampoco funciona


>palabra|palabrasuperlarga|43501|resto_sin importancia

/^>\w+\|(\w+)\|(\d+)/ -> Aquí ya rizando el rizo, necesito rescatar $1 y $2 para poder montar
después un identificador con ellas ($identificador="$1"."\_$2";)


Ojalá me podáis ayudar porque es algo muy urgente y sigo sin conseguirlo.

Un saludo
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Publicidad

Re: Expresión regular compleja que capture 20 caracteres

Notapor explorer » 2013-09-26 06:58 @332

Alfumao escribiste:Necesito conseguir una expresión regular que capture solo 20 caracteres de estructuras como las siguientes.

>palabrasuperlarga_2_189137

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $header =~ /^>(\w{20})/;  # captura (()) 20 caracteres alfanuméricos ({20}), exactamente.
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Alfumao escribiste:>palabra|palabrasuperlarga|43501|resto_sin importancia

/^>\w+\|(\w+)\|(\d+)/ -> Aquí ya rizando el rizo, necesito rescatar $1 y $2 para poder montar
después un identificador con ellas ($identificador="$1"."\_$2";)

No dices nada de los dígitos, así que capturaremos solo las dos primeras palabras:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($header =~ /^>(\w+)\|(\w{20})/) {
  2.     $identificador = "$1\_$2";
  3. }
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: Expresión regular compleja que capture 20 caracteres

Notapor Alfumao » 2013-09-26 07:46 @365

¡¡¡Muchísimas gracias, explorer!!!

Siempre tienes la solución acertada ;)
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron