Schrift
[thread]7062[/thread]

regexp



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
nurri
 2005-06-20 17:07
#55609 #55609
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
hallo,

ich habe einen ausschnitte der folgt aussieht
Code: (dl )
A("Stand","Retour",'NO',777,"4","DD/PP",9,20524)

ich habe folgenden pattern probiert:


Code: (dl )
(@values) = $content =~ /A\([^\)]+?,(\d+),\d+\)/g;


dass , problem liegt nun darin, dass ich ich die vorletzte zahl 9 bekomme - möchte aber den wert nach 'NO' als value /* in diesem fall 777

kann mir jemand dabei helfen
Ishka
 2005-06-20 17:16
#55610 #55610
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Meinst du sowas?
Code: (dl )
1
2
3
$content =~ m/A\((.*)\)/;
my @values=split /,/,$1;
s/(["'])(.*)\1/$2/ for @values;
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
nurri
 2005-06-20 17:30
#55611 #55611
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
nein, ohne split ...\n\n

<!--EDIT|nurri|1119274798-->
Taulmarill
 2005-06-20 17:41
#55612 #55612
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wenn du den wert nach 'NO' haben willst, dann mach doch einfach
$content =~ m/\Q'NO',\E(\d+)/;
$value = $1;
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
nurri
 2005-06-20 17:54
#55613 #55613
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
das problem bei deinem vorschlag ist der,
das die Angaben variieren, anstatt NO z.B YES

A("Stand","Retour",'YES',777,"4","DD/PP",9,20524)

aber die Gesamtstruktur bestehen bleibt ...
Taulmarill
 2005-06-20 18:20
#55614 #55614
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
also möchtest du im endeffekt eher so etwas wie:
my $value = (split ",", $content)[3]
das währe imo die passendste lösung um den wert an 4. stelle zu extrahieren. wieso möchtest du denn kein split verwenden?
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
nurri
 2005-06-20 18:35
#55615 #55615
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
hallo,

weil ich LWP::Simple benutze - daher sollte es ein RegEx sein
Taulmarill
 2005-06-20 19:31
#55616 #55616
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
hm, eigendlich müsste doch auch $value = $content =~ m/,(\d+),/; gehen, zumindest wenn es immer der erste numerische wert in der zeile ist.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Strat
 2005-06-20 20:01
#55617 #55617
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=nurri,20.06.2005, 15:07]
Code: (dl )
(@values) = $content =~ /A\([^\)]+?,(\d+),\d+\)/g;
[/quote]
bei dir frisst nur [^\)]+? fast beliebige zeichen
dein pattern endet mit \) , was nur an der letzten stelle matcht. also wird \d+ vom ) weg nach vorne gesucht usw, und du bekommst die 9...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
nurri
 2005-06-20 21:17
#55618 #55618
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
ja - ;)
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2005-06-20 17:07.