Christian Kruse: Request-String parsen

Beitrag lesen

Hallo Andreas,

/Auswahl=(.*?)[^\w%.+_-]/

Nee, das ist Unfug.
Warum? "finde alle Zeichen bis zum nächsten Zeichen außer
Buchstaben, Zahlen, %, ., +, _ und -". Andere Zeichen
kommen IMHO nicht vor, also warum ist das Unfug?

Weil es verdammt langsam und umstaendlich ist. Du zwingst so
jede RegEx-Maschine in die Knie.

Sinnvoller waere
/Auswahl=([^&]*)/

Dann fehlt aber das letze Element!

Nein:

ckruse@sunshine:~/tmp/stats $ cat test.pl
#!/usr/bin/perl -w

use strict;

my $qs = 'Auswahl=hallo&Auswahl=blahr&Auswahl=blub';
my @matches = $qs =~ /Auswahl=([^&]+)/g;

print join(', ',@matches),"\n";

ckruse@sunshine:~/tmp/stats $ perl test.pl
hallo, blahr, blub
ckruse@sunshine:~/tmp/stats $

Es wird ja nicht *erzwungen*, dass ein & folgt, sondern es
wird nur gesagt 'gib mir alles bis auf &' -- es muss gar kein
& vorkommen.

Dass es funktioniert, wundert mich jetzt.
Funktioniert IMHO sogar besser als Deine Version ;-)

Nee, nicht wirklich.

Gruesse,
 CK