• Publicidad

Expresión regular con el carácter °

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Expresión regular con el carácter °

Notapor magnobalt » 2010-04-26 00:30 @062

Hola, buenas, a la gente de Perl en español. Estoy teniendo un problema con una expresion regular. Les cuento la situación.
Necesito sacar la temperatura de una página WEB con expresión regular de esta sección.

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <span style=" font-family:Arial, Helvetica, sans-serif; font-size:18px; color:#003366; text-align:center;"><b>17.8 °C</b></span>
  2.  
  3.                 </div>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Lo bueno es que lo pude sin ningún drama con esta expresion regular:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$pedido =~m/font-size:18px; color:#003366; text-align:center;"><b>(.*)C<\/b><\/span>/s;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


El problema radica que el carácter °, en la shell me lo muestra de esta forma: . Precisamente a mi no me interesa tomar el carácter °, yo solo quiero el número, o sea, en este caso 17.8, con eso ya solucionaría mi problema. Entonces he intentado por ejemplo de este modo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$pedido =~m/font-size:18px; color:#003366; text-align:center;"><b>(.*)°C<\/b><\/span>/s;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


o por ejemplo que solo me tome un entero de este modo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$pedido =~m/font-size:18px; color:#003366; text-align:center;"><b>(\d+\.\d)C<\/b><\/span>/s;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero no puedo solucionar cuando realizo esos procedimientos no me toma nada la variable $1...

Si alguien me puede ayudar le agradecería mucho, como dije y repito solo necesito tomar el número real que es en este caso el 17.8.

Saludos. Muchas gracias
magnobalt
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2010-03-24 17:59 @791

Publicidad

Re: Expresión regular con el carácter °

Notapor explorer » 2010-04-26 03:08 @172

Muy sencillo... si solo quieres capturar el número, pues eso mismo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$pedido =~ m/text-align:center;"><b>([\d.]+)/s;
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: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Expresión regular con el carácter °

Notapor magnobalt » 2010-04-27 00:41 @070

Hola explorer, gracias por responder, pero sigue sin funcionar. Es muy raro esto; no entiendo por qué. Igualmente ya trabajé con otra página de donde saco el pronóstico.
Me quedó de este modo

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$pedido =~m/font-size:18px; color:#003366; text-align:center;"><b>([\d.]+)C<\/b><\/span>/s;
$temp=$1
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y no me sigue trayendo nada: me coloca el valor que tenía $1 en la expresion regular anterior. Es decir, en el anterior saco si está nublado, despejado, etc. Y en $temp coloca lo que saco de la expresión regular anterior, por ejemplo, Despejado...

Saludos
Última edición por explorer el 2010-04-27 02:35 @149, editado 1 vez en total
Razón: Tildes
magnobalt
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2010-03-24 17:59 @791

Re: Expresión regular con el carácter °

Notapor explorer » 2010-04-27 02:48 @158

La mía funciona...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use 5.010;
  3.  
  4. my $pedido = q(
  5.       <span style=" font-family:Arial, Helvetica, sans-serif; font-size:18px; color:#003366; text-align:center;"><b>17.8 °C</b></span>
  6.  
  7.                       </div>
  8. );
  9.  
  10. $pedido =~ m/text-align:center;"><b>([\d.]+)/s;
  11.  
  12. say $1;
  13.  
  14. __END__
  15. 17.8
  16.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Fíjate bien en mi expresión regular: solo captura el número. No mira en lo que sigue después, como la tuya.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

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