• Publicidad

Encontrar última línea de un texto

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

Encontrar última línea de un texto

Notapor BigBear » 2012-02-26 20:08 @880

Hola, tengo el siguiente texto

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
<control>pongo uno
uno
<control> pongo dos
dos
<control> pongo tres
tres
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Mi duda es cómo usar una expresión regular para capturar el último comando que es "pongo tres" sin saber cuál es, me refiero a una expresión regular que siempre capture el comando del último <control>

¿ Alguien me puede ayudar ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Encontrar última línea de un texto

Notapor explorer » 2012-02-26 20:37 @900

Esta es con una expresión regular:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my($ultimo) = $texto =~ /.*<control>\s*(.+?)$/sm;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

La opción /s nos permite usar el comodín '.' para encontrar los caracteres finales de línea, mientras que la opción /m nos permite usar '$' para indicar la posición de un carácter de fin de línea. De esa manera podemos trabajar con texto multilínea.

Con el operador avaricioso '.*' encontramos todos los caracteres hasta el fin del texto. Luego, retrocede hasta encontrar el primer '<control>' (es decir, el último del texto). Después de encontrarlo, debe aparecer entre cero o más caracteres espacio, que no nos interesan ('\s*'), seguido de un texto ('.+?') que va hasta el final de línea ('$'), que capturamos con los paréntesis, y metemos en $ultimo, y terminamos.

Hay más formas, desde luego. Por ejemplo, si metes el texto en un array, podrías acceder mirando en $array[-1] o $array[-2].
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: Bing [Bot] y 42 invitados