Ich habe diese df:Count Zeichen eines Abschnitts eines Strings
dput(df)
structure(list(URLs = c("http://bursesvp.ro//portal/user/_/Banco_Votorantim_Cartoes/0-7f2f5cb67f1-22918b.html",
"http://46.165.216.78/.CartoesVotorantim/Usuarios/Cadastro/BV6102891782/",
"http://www.chalcedonyhotel.com/images/promoc/premiado.tam.fidelidade/",
"http://bmbt.ro/portal/a3/_Votorantim_/VotorantimCartoes2016/0-7f2f5cb67f1-22928b.html",
"http://voeazul.nl/azul/")), .Names = "URLs", row.names = c(NA,
-5L), class = "data.frame")
Es unterschiedliche URLs beschreibt und ich versuche, die Anzahl der Zeichen des Namens Host zu zählen, ob das ein tatsächlicher Name (http://hostname.com/....) Oder eine IP (http://000.000.000.000/...). Wenn es sich jedoch um einen tatsächlichen Namen handelt, möchte ich nur den nchar zwischen www. und .com. Wenn es eine IP ist, dann alle ihre Nummern und "dazwischen" Punkte.
erwartetes Ergebnis für die obigen Beispieldaten:
exp_outcome
1 8
2 13
3 15
4 4
5 7
Ich hat versucht, etwas mit strsplit
zu tun, kann aber nicht überall.
Das ist großartig, und ich ziehe es meiner eigenen Lösung vor - aber ich muss fragen: warum schreibe '/ {2}' anstelle von '/ {2}' oder sogar '//', und Warum schreibe 'w {3}' statt 'www'? Es ist länger und weniger lesbar. Anstelle von '(www) *' sollten Sie '(www)?' Verwenden, weil wir "null oder eins", nicht "null oder mehr" (und dasselbe später) wollen. Und noch eine letzte Sache: Domain-Namen können mehr als nur Buchstaben enthalten, sie können auch Ziffern und Bindestriche und viele andere Dinge enthalten. Eine Charakterklasse wird es also nicht schneiden, du musst wahrscheinlich alles außer '.' und'/'hier akzeptieren. –
@KonradRudolph danke, [/] es ist zu vermeiden, zu entkommen/und [//] wird nicht funktionieren. w {3} es ist nur weil ich nicht www (persönliche wahl ...) wiederholen wollte. Danke für die Bemerkung zu "?", Es wäre in der Tat angemessener. Ich bin es nicht gewohnt? abgesehen von Umsicht. – Cath
Tatsächlich, [Wikipedia sagt] (https://en.wikipedia.org/wiki/Domain_name), dass nur Zeichen und Zahlen in Domain-Namen zulässig sind, und Bindestriche, wenn sie von ersterem umgeben sind (so dass dies eine Fehlerbehebung für mein Anliegen vereinfacht über). Und es gibt keine Notwendigkeit zu entkommen '/'. Nur '\\' muss geflüchtet werden. –