Leser: 30
1
2
3
4
5
6
.... <tr class="hgrau2 hr"><td width="65">Datum: 02.01.08</td>
<td width="65">11,330</td><td width="65">12,330</td>
<td width="65">13,330</td><td width="65">14,330</td><
td> </td></tr></table><div class="tb_ot">
Als Kursliste öffnen und drucken: <a class="pfeil"
style="margin-left:10px;" href="javascript:p('popup_histo .....
([0-9]{1,6},[0-9]{1,3})
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/usr/bin/perl use strict; use warnings; my $str = q~<tr class="hgrau2 hr"><td width="65">Datum: 02.01.08</td> <td width="65">11,330</td><td width="65">12,330</td> <td width="65">13,330</td><td width="65">14,330</td>< td> </td></tr></table><div class="tb_ot"> Als Kursliste öffnen und drucken: <a class="pfeil" style="margin-left:10px;" href="javascript:p('popup_histo ..... ~; my @matched = $str =~ m/(\d{1,6},\d{1,3})/gm; { local $, = local $\ = $/; print @matched; }
2009-11-02T20:52:48 Linuxer
my @matched = $str =~ m/(\d{1,6},\d{1,3})/gm;
{
local $, = local $\ = $/;
print @matched;
}
[/perl]
local $, = local $\ = $/;
local $, = local $\ = $/;
2009-11-02T22:11:24 lichtkindwir könnten den teil der perldoc auch mal übersetzten :)
2009-11-03T18:41:15 DubuGute Idee. :-)
In derWunschListe steht sogar schon ein Freiwilliger: renee.
2009-11-04T11:54:52 lichtkinddubu: komisch jetzt seh ich die liste.
2009-11-04T11:54:52 lichtkindvielleicht wäre es hilfreich eine spalte zu haben für welche perlversion übersetzt wurde da selbst ein 100% heute wieder unvollständig sein kann.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$, == $OUTPUT_FIELD_SEPARATOR
The output field separator for the print operator. If defined, this value
is printed between each of print's arguments. Default is undef.
(Mnemonic: what is printed when there is a "," in your print statement.)
$\ == $OUTPUT_RECORD_SEPARATOR
The output record separator for the print operator. If defined, this value
is printed after the last of print's arguments. Default is undef.
(Mnemonic: you set $\ instead of adding "\n" at the end of the print.
Also, it's just like $/ , but it's what you get "back" from Perl.)
$/ == $INPUT_RECORD_SEPARATOR
... [zu viel Text zum Kopieren, bitte nachschlagen;
kurz: Default ist ein Zeilenumbruch enthalten]
2009-11-02T21:02:51 LinuxerAlso falsche Ergebnisse wünsche ich mir grundsätzlich nicht ^^. Du meinst, ob ein Fehler auftritt oder?"funktioniert leider nicht" ist eine Aussage ohne brauchbaren Informationsgehalt.
Wir wissen dadurch nicht, ob einfach nicht das gewünschte Ergebnis kommt,
ob ein falsches Ergebnis kommt, ob eine Warnung ausgeworfen wurde (und wenn ja, welche) oder ob ein Fehler gemeldet wurde (wenn ja, welcher?).
IceRage
Was ich nun damit erreiche, ist, dass der Erste Treffer hinter dem Datum in $1 steht (also 11,330). Ich möchte aber den letzten Treffer, den der Ausdruck ergeben würde in $1 stehen haben (also 14,330). Ich habe es schon mit ([0-9]{1,6},[0-9]{1,3})$ versucht. Aber das funktioniert leider nicht.
2009-11-02T21:02:51 LinuxerAusserdem gibst Du keine brauchbaren Code ab, den man analysieren könnte.
Du präsentierst zwar den Regex, aber nicht, wie Du diesen Regex einsetzt.
Wie schaut denn der Code drum herum aus?
Das wären so Informationen, die das Helfen erleichtern würden...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#!/usr/bin/perl use LWP; use LWP::Simple; use HTTP::Headers; use HTTP::Request; use HTML::Form; use strict; use warnings; use POSIX qw(ceil floor); print "Hello, RequestedShareValuedWorld...\n"; my $ua = new LWP::UserAgent; $ua->agent("MudGuard/1.0"); my $req = HTTP::Request->new("GET", "http://aktien.onvista.de/charts.html?ID_OSI=94352"); my $res = $ua->request($req); my $site = $res->content; my @forms = HTML::Form->parse($res); $forms[3]->param('ID_NOTATION_SELECTED', '200958'); $forms[3]->param('DATE', '02.01.2008'); $req = $forms[3]->click();; $res = $ua->request($req); my $site = $res->content; # keine ahnung warum mit ([0-9]{1,6},[0-9]{1,3})$ nicht der schlusskurz gefiltert werden kann. # so ([0-9]{1,6},[0-9]{1,3}) kommt immer nur der eroffnungskurs. der schlusskurs wäre der # letzte treffer in site von hinten. $site =~ /([0-9]{1,6},[0-9]{1,3})/s; print $1; # my @close_price = $site =~ m/(\d{1,6},\d{1,3})/gm; # local $, = local $\ = $/; # print @close_price."\n"; my $file = "test.html"; open(TEMP_FILE, ">$file"); print TEMP_FILE $site; close(TEMP_FILE);
Datum: \d\d.\d\d.\d\d(?:.+?(\d{1,6},\d{1,3})</td>)+.+?</tr>