Schrift
[thread]8065[/thread]

suchen / Schleife

Leser: 1


<< >> 4 Einträge, 1 Seite
honky
 2006-06-08 11:20
#67108 #67108
User since
2006-05-23
43 Artikel
BenutzerIn
[default_avatar]
Hallo!

Folgendes möchte ich realisieren:

Code: (dl )
1
2
3
while ( $data[$t] =~ /(\S+)/ ){
    push @test, /(\S+)/;
    }


Jedoch findet er dieses Muster bei mir immer wieder (muster soll hier egal sein). Wie kann man es umsetzen, dass er immer bei einem Fund, das Gefundene mit push zu einem Array hinzufügt, solange er etwas findet?

Danke, Honky\n\n

<!--EDIT|honky|1149751279-->
Linuxer
 2006-06-08 11:42
#67109 #67109
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

der zweite RegEx ist ueberflüssig, wenn das Muster gleich ist.

So sollte es funktionieren:

Code: (dl )
1
2
3
4
5
# solange treffer gefunden werden
while ( $data[$t] =~ /(\S+)/g ){
# wird jeder treffer in @test abgelegt
push( @test, $1 );
}


Bei Deinem Code hast Du, sobald ein Treffer gefunden werden kann, eine while ( TRUE ) Schleife.
Der erste Treffer wird gefunden, und das push wird ausgeführt. Dann prüft er wieder die Bedingung. Mangels /g-Modifier wird die RegEx-Suche wieder am String-Anfang gestartet und wieder wird der erste Treffer gefunden; das push wird wieder ausgeführt.
Das geht bis zum Programmabbruch so weiter ...

perlre

[edit1] Erklärung nachgereicht
[edit2] perl- duch code-block ersetzt; edit-history\n\n

<!--EDIT|Linuxer|1149754508-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
honky
 2006-06-08 11:56
#67110 #67110
User since
2006-05-23
43 Artikel
BenutzerIn
[default_avatar]
EDIT: doppelpost, hast meine frage gerade beantwortet :D\n\n

<!--EDIT|honky|1149753438-->
Taulmarill
 2006-06-08 14:04
#67111 #67111
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
besser als die while-schleife finde ich das direkte benutzen des regex-outputs:
Code: (dl )
my @test = $data[$t] =~ /(\S+)/g;
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
<< >> 4 Einträge, 1 Seite



View all threads created 2006-06-08 11:20.