Request-String parsen
Andreas Korthaus
- programmiertechnik
Hallo
Nur zur Kontrolle, ist folgende RegEx korrekt, um aus einem Request-String alle Parameter mit dem Namen "Auswahl" zu extrahieren?
/Auswahl=(.*?)[^\w%.+_-]/
Funktioniert zwar, was aber nicht heißen muß das es immer funktioniert.
Grüße
Andreas
Hallo Andreas,
Nur zur Kontrolle, ist folgende RegEx korrekt, um aus einem
Request-String alle Parameter mit dem Namen "Auswahl" zu
extrahieren?/Auswahl=(.*?)[^\w%.+_-]/
Nee, das ist Unfug. Sinnvoller waere
/Auswahl=([^&]*)/
Der Feld-Trenner ist das &, du sagst also: matche auf
'Auswahl=', gefolgt von allem ausser &, und das 0-n mal.
Funktioniert zwar, was aber nicht heißen muß das es immer
funktioniert.
Dass es funktioniert, wundert mich jetzt.
Gruesse,
CK
Hi Christian!
/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?
Sinnvoller waere
/Auswahl=([^&]*)/
Dann fehlt aber das letze Element!
Dass es funktioniert, wundert mich jetzt.
Funktioniert IMHO sogar besser als Deine Version ;-)
Viele Grüße
Andreas
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
Hallo!
Weil es verdammt langsam und umstaendlich ist. Du zwingst so
jede RegEx-Maschine in die Knie.
Na wenn ich was kann dann das ;-) Vermutlich wenigstens das besser als Du!
Es wird ja nicht *erzwungen*, dass ein & folgt, sondern es
wird nur gesagt 'gib mir alles bis auf &' -- es muss gar kein
& vorkommen.
Mist!
Ja, hast ja Recht, wäre auch zu schön gewesen... immer auf die Kleinen, Unwissenden... :-(
*g* Vielen Dank, aber vor allem für den JavaSript-Tipp unten!
Grüße
Andreas