Using perl Syntax Highlighting
- if($url =~ /resultCount">(\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?)/) { print "$1 resultados para \"$search\" en Yahoo.\n"; }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
La variable $url tiene dentro la página donde se encuentran los resultados. Yahoo y los demás buscadores separan los resultados de la búsqueda por un . cada 3 cifras y lo único que se me ocurrió está arriba , pero esta variable falla cuando por ejemplo el resultado es 3.000.000, y funciona siempre que la primera cifra tenga más de un dígito (o eso creo, el caso es que muchas veces no funciona). ¿Qué expresión regular podría resolver este problema?
Aquí el código completo:
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- use LWP::Simple;
- use URI::Escape;
- print "Buscar: ";
- my $search = <>;
- chomp $search;
- my $coded = uri_escape("$search");
- my $busqueda = "http://es.search.yahoo.com/search;_ylt=AvtvYP2k0jZxHsKUYtldlgldoq5_;_ylc=X1MDMjE0MjE1MTI2MQRfcgMyBGZyA3lmcC10LTcwNQRuX2dwcwMwBG9yaWdpbgNlcy55YWhvby5jb20EcXVlcnkDamhqaGpoamgEc2FvAzE-?vc=&vl=&fl=&p=$coded&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-705";
- my $url = get($busqueda) or die print "Error!";
- if($url =~ /resultCount">(\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?)/) { print "$1 resultados para \"$search\" en Yahoo.\n"; }
- $busqueda = "http://www.bing.com/search?q=$coded&go=&qs=n&sk=&sc=8-4&form=QBLH&filt=all";
- $url = get($busqueda) or die print "Error!";
- if($url =~ /count">1-10 de (\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?\d+\.?)/) { print "$1 resultados para \"$search\" en Bing.\n"; }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
P.D.: Muy buenos los artículos que hay sobre expresiones regulares acá.
Saludos