• Publicidad

Trabajando con cadenas

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

Trabajando con cadenas

Notapor desdechina » 2013-02-11 07:11 @341

Hola.

Estoy estudiando expresiones de cadenas y operadores de cadenas y me atasco un poco, bueno, bastante.
A ver si podéis echarme una mano

my @results = split(/<\/td>/,$tempstring)
Usa como separador la expresión </td>

/<td \/>.*<tr><td>(.*)/

<td />una cadena <tr><td>otra cadena

/.*<td>([0-9]+\.[0-9]+)<b>(.*)<\/b>.*/
.* : una cadena

([0-9]+\.[0-9]+) : Un número de uno o más dígitos, seguido de punto, seguido de otro número de uno o más dígitos
<b> = <b>
(.*) : una cadena
<\/b> = </b>
.* : una cadena

¿Qué tal lo llevo?
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Publicidad

Re: Trabajando con cadenas

Notapor explorer » 2013-02-11 08:56 @414

Hay que tener mucho cuidado con los operadores avariciosos '.*', porque intentan quedarse con la mayor cantidad posible de caracteres, mientras el patrón coincida. Eso da lugar a que, en ocasiones, no encontremos algunos patrones.

Ejemplo extraído de perlre:

A veces una coincidencia mínima puede ser de gran ayuda. Suponga que desea buscar todo lo que hay entre "mesa" y "come". Para empezar, lo intenta con:

$_ = "En la mesa, al mediodía, se come, y en el comedor se cena.";
if ( /mesa(.*)come/ ) {
print "se obtiene <$1>\n";
}


del que, inesperadamente, resulta:

se obtiene <, al mediodía, se come, y en el >

Esto se debe a que ".*" es avaricioso, por lo que obtiene todo lo que hay entre la primera instancia de "mesa" y la última instancia de "come". Aquí es más eficaz utilizar una coincidencia
mínima para asegurarse de obtener el texto entre una instancia de "mesa" y la primera instancia de "come" que haya a continuación.

if ( /mesa(.*?)come/ ) { print "obtiene <$1>\n" }

obtiene <, al mediodía, se >

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 15 invitados