Ich habe eine Zeichenfolge im Format einer URL-Abfrage:Extract Parameter Namen in URL-Abfrage
string <- "key1=value1&key2=value2"
Und ich möchte alle Parameter Namen extrahieren (key1
, key2
).
Ich dachte über strsplit
mit einem Split alles zwischen =
und einem optionalen &
.
unlist(strsplit(string, "=.+&?"))
[1] "key1"
Aber ich denke, dass dieses Muster passt vom ersten =
bis zum Ende des Strings einschließlich meiner optional &
im .+
. Ich vermute, dass dies wegen der "Gierigkeit" der Regexp ist, also habe ich versucht, es faul zu machen, aber ich habe ein seltsames Ergebnis bekommen.
> unlist(strsplit(string, "=.+?&?"))
[1] "key1" "alue1&key2" "alue2"
Jetzt verstehe ich nicht wirklich das, was hier und ich weiß nicht geschieht, wie ich es faul, wenn optional das letzte passende Zeichen machen.
Ich weiß (und ich denke, ich verstehe auch, warum), dass es funktioniert, wenn ich &
von .+
ausschließe, aber ich wünschte, ich könnte verstehen, warum die Regexp oben nicht funktionieren.
> unlist(strsplit(string, "=[^&]+&?"))
[1] "key1" "key2"
Meine aktuelle Option ist es mit in 2-mal zu tun:
unlist(sapply(unlist(strsplit(string, "&")), strsplit, split = "=.*", USE.NAMES = FALSE))
Was ich falsch mache diese regexp in einer zu erreichen? Danke für jede Hilfe.
Ich bin schmerzlich lernen Regexp, so würde jede andere Optionen auch für mein Wissen geschätzt werden!
Split Argument soll ein Trennzeichen beschreiben, kein Format der Teile, die Sie erhalten möchten – Aaron
Wenn Sie URL-Parameter extrahieren möchten, sollten Sie sich das Paket 'urltools' ansehen. Es kann haben, was Sie brauchen. Wenn Sie stattdessen regexp lernen möchten, lernen Sie auf jeden Fall weiter – GGamba
Relevant/Possible duplicated of http://stackoverflow.com/questions/4350440/split-a-column-of-a-data-frame-to-multiple- Spalten – zx8754