删除R中URL字符串的结尾

Nic*_*coM 5 regex r

我试图清理并删除R中的URL列表中的目录

是)我有的:

http://domain.com/123
http://www.sub.domain1.com/222
http://www.domain2.com/1233/abc
Run Code Online (Sandbox Code Playgroud)

我想要的是:

domain.com
sub.domain1.com
domain2.com
Run Code Online (Sandbox Code Playgroud)

我有一个很长的方法来清理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)
Run Code Online (Sandbox Code Playgroud)

(如果有更简单的方法来清理http://和www,请告诉我.)

现在我遇到了正则表达式的问题,并/在结束后删除了所有内容.我试过这个

cleanurl3 <- gsub("/*","",cleanurl2)
Run Code Online (Sandbox Code Playgroud)

但它只是删除了/而不是它后面的一切.

在此先感谢您的帮助!

Tyl*_*ker 6

我使用strsplit/ gsubcombo(不仅仅是gsubb/c,有时它很快就会弄清楚,strsplit因为它非常直观):

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"
Run Code Online (Sandbox Code Playgroud)

编辑
或者如果你想使用strsplit(根据马修的建议):

sapply(strsplit(x, "(//|/)(www[.])?"), "[", 2)
Run Code Online (Sandbox Code Playgroud)


Mat*_*erg 5

为了第一:

cleanurl <- sub("^http://(?:www[.])?(.*)$", "\\1", url)
cleanurl
## [1] "domain.com/123"       "sub.domain1.com/222"  "domain2.com/1233/abc"
Run Code Online (Sandbox Code Playgroud)

只是域:

cleanurl <- sub("^http://(?:www[.])?([^/]*).*$", "\\1", url)
cleanurl
## [1] "domain.com"      "sub.domain1.com" "domain2.com" 
Run Code Online (Sandbox Code Playgroud)