• Publicidad

Unir dos expresiones regulares

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Unir dos expresiones regulares

Notapor danimera » 2013-06-03 12:35 @566

¿Cómo puedo unir dos expresiones regulares para que en una sola línea me traiga los dos datos que deseo?

Tengo esta cadena:
Sintáxis: [ Descargar ] [ Ocultar ]
  1.   var lat = 3.43575165; 
  2.     var lon = -76.54623305; 
  3.     var companyId = '15721119'; 
  4.     var companyName = 'RESTAURANTE'; 
  5.     var cityId = 'gfghj'; 
  6.     var cityName = 'ghfg'; 

y con este código obtengo lo que tiene el var lat
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my ($latitude,$longitude) = $content =~ m/var lat \=(.+?)\;/;
  2. $longitude = $content =~ m/var lon \=(.+?)\;/;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

pero quiero obtener ahí mismo el valor de var lon para dejarlo guardado en longitude.

No logro saber cómo hacerlo, para que me encuentre los dos resultados en una sola expresión regular...
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Re: Unir dos expresiones regulares

Notapor explorer » 2013-06-03 13:16 @594

Se puede hacer tratando a la cadena como un conjunto de múltiples líneas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.10;
  3.  
  4. my $cadena = do { local $/; open F, "kk.txt"; <F> };
  5.  
  6. my($latitude,$longitude) = $cadena =~ /var lat = (.+?);.*?var lon = (.+?);/sm;
  7.  
  8. say "[$latitude][$longitude]";
  9.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

De todas maneras, esto solo funciona si siempre aparece la latitud y longitud, en ese orden.

Otra forma de hacerlo es hacerlo independiente de su posición:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.10;
  3.  
  4. my $cadena = do { local $/; open F, "kk.txt"; <F> };
  5.  
  6. my %posicion;
  7.  
  8. for my $m (qw(lat lon)) {
  9.     if ($cadena =~ /var $m = (.+?);/) {
  10.         $posicion{$m} = $1;
  11.     }
  12. }
  13.  
  14. say "[$posicion{lat}][$posicion{lon}]";
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

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

cron