• Publicidad

Seleccionar el contenido entre dos ocurrencias

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

Seleccionar el contenido entre dos ocurrencias

Notapor abhortas » 2017-07-04 12:04 @544

Hola. Tengo una duda y, seguro que es muy fácil, pero no consigo encontrar cómo hacerlo.

Se trata de seleccionar todo el contenido entre dos ocurrencias, o por ejemplo, entre el inicio de una cadena y la última ocurrencia de un carácter. Algo como este ejemplo:

$cadena = "A.B.C.D";

y quiero seleccionar desde el inicio de la cadena hasta el último punto.

Para seleccionar entre el inicio y el primer punto, sé hacerlo:

$cadena =~ /^(.+?)\./; # por lo que se guardaría "A" en la variable $1

Pero sí me interesa lo que está antes del último punto. Es decir, poder seleccionar "A.B.C".

Gracias por la ayuda y siento si es una duda muy tonta.
abhortas
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2015-10-23 05:57 @290

Publicidad

Re: Seleccionar el contenido entre dos ocurrencias

Notapor explorer » 2017-07-04 12:57 @581

Se puede hacer con rindex(), que funciona igual que index(), pero empezando por el final.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.14;
  3.  
  4. my $cadena = "A.B.C.D";
  5.  
  6. my $pos_ultimo_punto = rindex $cadena, '.';
  7.  
  8. say "Está en posición $pos_ultimo_punto";
  9.  
  10. say substr $cadena, 0, $pos_ultimo_punto;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Más información en perldoc -f rindex

Otra opción es usando una expresión regular:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.14;
  3.  
  4. my $cadena = "A.B.C.D";
  5.  
  6. my($subcadena) = $cadena =~ /^(.+)[.][^.]+$/;
  7.  
  8. say $subcadena;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

El patrón quiere decir:
  • desde el comienzo (^), captura todo lo que haya hasta un punto [.]
  • que esté seguido por cualquier cosa que no sea un punto [^.]+
  • y nada más ($)
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: Seleccionar el contenido entre dos ocurrencias

Notapor abhortas » 2017-07-05 08:30 @395

Muchas gracias, explorer. Como siempre, de mucha ayuda, tus consejos.
abhortas
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2015-10-23 05:57 @290


Volver a Básico

¿Quién está conectado?

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