Avatar billede al_dair Nybegynder
29. juni 2005 - 11:46 Der er 7 kommentarer og
2 løsninger

en hurtig regex til at trække tal ud

Hey,

Jeg har:

<td><a href="http://www.valutakurser.dk/currency/ShowGraph.aspx?ValutaID=29926" title="USD/DKK">USD/DKK</a></td>
<td align="right">6,1925</td>

og skal trække tallet 6,1925 ud.
kan ikke få den her til at matche:

my $page = get("http://www.valutakurser.dk");

#if ($page =~ m/<td><a href="([^"]*)"> title="USD/DKK">USD\/DKK<\/a><\/td>[\r\n]*<td align=\"right\">([^<]*)<\/td>/si)
if ($page =~ m/<td><a href=\"http:\/\/www.valutakurser.dk\/currency\/ShowGraph.aspx?ValutaID=29926\"\stitle=\"USD\/DKK\">USD\/DKK<\/a><\/td>[\r\n]*<td align=\"right\">(.*)<\/td>/)
    {
    print "$1,$2";
    }


nogle forslag?
Tak
Avatar billede xohp Nybegynder
29. juni 2005 - 12:42 #1
m/<td><a[^>]*>USD\/DKK<\/a><\/td>[\s\n]*<td[^>]>(<[^<]+)<\/td>/g

med mindre man angiver global match m//g så ser regex newlines som seperators og søger hver linie for sigselv, nu søger den så hele siden/strengen igennem, så det kan være lidt lumsk.

anyway forstår ikke hvorfor du vil rippe valutakursers side, når du kan få det leveret i let tilgænglig xml format fra den danske og lettiske nationalbank, federal reserve i new york og en anden bank i israel... ved at samle dem sammen har jeg efterhånden fået over 50 forskellige valuta'er og med lidt matematik har jeg lavet så det bliver ensformig (så de alle refererer til den samme valuta og de regner den samme vej... men hvis det kun er USD og måske Euro du har brug for så rækker nationalbankens xml feed udemærket, bare et forslag :) Enjoy
Avatar billede al_dair Nybegynder
29. juni 2005 - 13:02 #2
er det dit endelig svar? :)
det ser ikke ud til at det matcher..
printer ingenting..


Jeg kender da national bankens xml, men de opdaterer daglig, hvis du vel at mærke referer til denne her http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml

valutakurser.dk opdateres deres hyppigere (gennem saxo bank).
for resten, så kan dette vel ikke klassificeres som "rip", det falder indenfor det normale brug af et tilgængeligt materiale :O
Avatar billede nielle Nybegynder
29. juni 2005 - 18:33 #3
Måske sådan her:

$page =~ s/.*<td><a href="http:\/\/www.valutakurser.dk\/currency\/ShowGraph.aspx\?ValutaID=29926" title="USD\/DKK">USD\/DKK<\/a><\/td>
<td align="right">(.*?)<\/td>.*/$1/s;
Avatar billede nielle Nybegynder
29. juni 2005 - 18:43 #4
Denne her virker nok en smule bedre:

$page =~ s#<td><a href="http://www.valutakurser.dk/currency/ShowGraph.aspx\?ValutaID=29926" title="USD/DKK">USD/DKK</a></td>\s*?<td align="right">(.+?)</td>#$1#s;
Avatar billede al_dair Nybegynder
30. juni 2005 - 07:13 #5
smukt, nielle
tak

smid et svar
Avatar billede xohp Nybegynder
30. juni 2005 - 11:09 #6
nej jeg testede godtnok ikke matchet, og kan da godtnok også se ihvertfald een fejl.

m/<td><a[^>]*>USD\/DKK<\/a><\/td>[\s\n]*<td[^>]*>(<[^<]+)<\/td>/g

anyway, stadig ikke testet... udover i hovedet på migselv, men det er jo tydeligvis ikke en garanti :D

mente nu heller ikke rip på nogen negativ måde :) jeg syns bare det er lidt overkill at splitte en html ad, når det findes som xml flere steder på internettet.

Jeg kan ikke udtale mig om hvor ofte valuta kurser opdaterer deres tal, men på den anden side, så får man normalt ikke vekslet til forskellig kurs på forskellige tidspunkter af dagen, med mindre man selv har noget med valuta handel at gøre, og har man dét burde man nok overveje at betale for et direkte xml feed til sin virksomhed i stedet for at stole på andet eller 3. led fra kilden.

anyway hyg
Avatar billede nielle Nybegynder
30. juni 2005 - 20:19 #7
Svar :^)
Avatar billede nielle Nybegynder
30. juni 2005 - 20:20 #8
... og det var altså et svar :^)
Avatar billede nielle Nybegynder
11. juli 2005 - 19:52 #9
?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester