我正在尝试清理并删除R
中的URL列表中的目录我有什么:
http://domain.com/123
http://www.sub.domain1.com/222
http://www.domain2.com/1233/abc
我想要的是什么:
domain.com
sub.domain1.com
domain2.com
我有一个很长的方法来清理URL的开头
url <- c("http://domain.com/123", "http://www.sub.domain1.com/222","http://www.domain2.com/1233/abc"
cleanurl <- gsub("http://","",url)
cleanurl2 <- gsub("www.","",cleanurl)
(如果有更简单的方法来清理http://和www,请告诉我。)
现在我遇到了正则表达式的问题,并在最后/
之后删除了所有内容。
我试过这个
cleanurl3 <- gsub("/*","",cleanurl2)
但它只是删除了/
而不是它之后的所有内容。
提前感谢您的帮助!
答案 0 :(得分:5)
我采用strsplit
/ gsub
组合方法(不仅仅是gsub
b / c,有时它会很快找出strsplit
,因为它非常直观):< / p>
x <- readLines(n=3)
http://domain.com/123
http://www.sub.domain1.com/222
http://www.domain2.com/1233/abc
gsub("www.", "", sapply(strsplit(x, "//|/"), "[", 2))
## > gsub("www.", "", sapply(strsplit(x, "//|/"), "[", 2))
## [1] "domain.com" "sub.domain1.com" "domain2.com"
修改强>
或者,如果您只想使用strsplit
(根据Matthew的建议):
sapply(strsplit(x, "(//|/)(www[.])?"), "[", 2)
答案 1 :(得分:4)
第一个:
cleanurl <- sub("^http://(?:www[.])?(.*)$", "\\1", url)
cleanurl
## [1] "domain.com/123" "sub.domain1.com/222" "domain2.com/1233/abc"
只是域名:
cleanurl <- sub("^http://(?:www[.])?([^/]*).*$", "\\1", url)
cleanurl
## [1] "domain.com" "sub.domain1.com" "domain2.com"
答案 2 :(得分:1)
这应该有效:
cleanurl <- gsub("http://","",url)
cleanurl2 <- gsub("www.","",cleanurl)
sapply(strsplit(cleanurl2,"/"),"[",1)
[1] "domain.com" "sub.domain1.com"
[3] "domain2.com"