Página 1 de 1

Expresión regular con el carácter °

NotaPublicado: 2010-04-26 00:30 @062
por magnobalt
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

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

NotaPublicado: 2010-04-26 03:08 @172
por explorer
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

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

NotaPublicado: 2010-04-27 00:41 @070
por magnobalt
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

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

NotaPublicado: 2010-04-27 02:48 @158
por explorer
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.