【发布时间】:2016-05-07 09:55:27
【问题描述】:
我有这个包含 URL 的示例向量。我的目标是获取 URL 的路径。
sample1 <- c("http://tercihblog.com/indirisu/docugard/", "http://funerariagomez.com/js/ggogle/a201209e3f79b740337b7bdb521630fe/",
"http://www.t-online.de/contacts/2015/08/atlas.html/", "http://mgracetimber.ie/wp-content/themes/Banner/db/box/",
"http://zamartrade.com/cs/DHL/DHL%20_%20Tracking.htm/", "http://dunhamengineering.com/menu/Auto-loadgoogleDrive/Document.Index/",
"http://www.indiegogo.com/guide/forum/2014/09/forgot-password/",
"http://raetc.com/wp-admin/Service/clients/votre-compte/en-ligne/imp-rem.fr/",
"http://www.lidanhang.com/img/?https://secure.runescape.com/m=weblogin/loginform.ws?mod=www&hwjklxlamp;ssl=0&dest/",
"http://www.sudaener.com/wp-includes/js/crop/dropbox/", "https://zeustracker.abuse.ch/blocklist.php/",
"https://zeustracker.abuse.ch/blocklist.php?download=hostsdeny/",
"https://zeustracker.abuse.ch/blocklist.php?download=iptablesblocklist/",
"https://zeustracker.abuse.ch/blocklist.php?download=snort/",
"https://zeustracker.abuse.ch/blocklist.php?download=squiddomain/"
)
我最初的尝试是这样的:
gsub('http://[^/]+/','/',sample1)
但是,这不适用于具有 https:// 的 URL。一个合适的解决方案是在第三次出现"/" 之前删除所有内容。我想知道如何使用 regex 来做到这一点,以及是否有办法使用 substring 来做到这一点。
谢谢
【问题讨论】:
-
也许是
gsub('https?://[^/]+/','/',sample1)? (s?说“s”0 或 1 次)。 -
@Cath,是的,就正则表达式而言,这将做到这一点。
-
还有什么比这里的正则表达式更进一步? :) 这是适合您的解决方案吗?
-
嗯,我想知道
substring是否也会这样做 -
还有另一种使用
strsplit的方法,但正如您所见,gsub更明智:sapply(sample1, function(s) paste0(c('', unlist(strsplit(s, '/'))[-(1:3)]), collapse='/'), USE.NAMES=FALSE)